使用 JavaScript 設計網頁需要注意代碼出現的順序以及是否將代碼封裝到函數或對象中,所有這些都會影響代碼運行的順序。想要掌握網頁設計最新的編程技能和知識,建議參加web前端培訓,課程實時更新,緊跟企業需求,讓你輕松找到工作。
JavaScript 網頁上的位置
由于頁面上的 JavaScript 基于某些因素執行,讓我們考慮在何處以及如何將 JavaScript 添加到網頁。基本上我們可以在三個位置附加 JavaScript:
直接進入頁面頭部
直接進入頁面正文
從事件處理程序/偵聽器
JavaScript 是在網頁本身還是在鏈接到頁面的外部文件中沒有任何區別。 事件處理程序是硬編碼到頁面中還是由 JavaScript 本身添加也無關緊要(除非它們在添加之前不能被觸發)。
1. 直接在頁面上編碼
說 JavaScript 直接在頁面的頭部或正文中是什么意思?如果代碼沒有包含在函數或對象中,則直接在頁面中。在這種情況下,只要包含代碼的文件已加載到足以訪問該代碼,代碼就會按順序運行。
函數或對象中的代碼僅在調用該函數或對象時運行。基本上,這意味著頁面頭部和正文中任何不在函數或對象內的代碼都將在頁面加載時運行——只要頁面加載到足以訪問該代碼的程度。關于更多網頁設計的技巧,可以考慮通過參加web前端培訓來學習,有專業老師指導,有全面系統的課程,學起來又快又輕松。
最后一點很重要,它會影響你在頁面上放置代碼的順序:任何直接放置在頁面中且需要與頁面中的元素交互的代碼都必須出現在它所依賴的頁面中的元素之后。一般來說,這意味著如果你使用直接代碼與頁面內容進行交互,則此類代碼應放在正文的底部。
函數和對象中的代碼
每當調用該函數或對象時,就會運行函數或對象中的代碼。如果它是從直接位于頁面頭部或正文中的代碼調用的,那么它在執行順序中的位置實際上就是從直接代碼調用函數或對象的點。
2. 分配給事件處理程序和偵聽器的代碼
將函數分配給事件處理程序或偵聽器不會導致函數在分配時運行 - 前提是你實際上是在分配函數本身而不是運行函數并分配返回的值。 (這就是為什么在將函數分配給事件時通常看不到函數名稱末尾的 (),因為添加括號會運行函數并分配返回的值,而不是分配函數本身。)
附加到事件處理程序和偵聽器的函數在它們附加到的事件被觸發時運行。 大多數事件是由與你的頁面交互的訪問者觸發的。 但是,存在一些例外情況,例如窗口本身的 load 事件,該事件在頁面完成加載時觸發。如果你想學習 JavaScript編程技巧,你可以從web前端培訓課程開始,這是一個很好的起點和開始。
附加到頁面元素事件的函數
任何附加到頁面本身元素上的事件的函數都將根據每個訪問者的操作運行 - 此代碼僅在發生特定事件以觸發它時運行。 出于這個原因,代碼是否永遠不會為給定的訪問者運行并不重要,因為該訪問者顯然沒有執行需要它的交互。
當然,所有這一切都假設你的訪問者使用啟用了JavaScript的瀏覽器訪問了你的頁面。
3. 自定義訪客用戶腳本
一些用戶安裝了可能與你的網頁交互的特殊腳本。這些腳本在你的所有直接代碼之后運行,但在附加到加載事件處理程序的任何代碼之前運行。
由于你的頁面對這些用戶腳本一無所知,因此你無法知道這些外部腳本可能會做什么 - 它們可以覆蓋你附加到你分配處理的各種事件的任何或所有代碼。如果此代碼覆蓋事件處理程序或偵聽器,則對事件觸發器的響應將運行用戶定義的代碼,而不是運行你的代碼,或者除了運行你的代碼之外。
這里的要點是,你不能假設設計為在頁面加載后運行的代碼將被允許按照你設計的方式運行。此外,請注意,某些瀏覽器具有允許在瀏覽器中禁用某些事件處理程序的選項,在這種情況下,相關事件觸發器將不會在你的代碼中啟動相應的事件處理程序/偵聽器。在web前端培訓學習中,有很多關于 JavaScript 設計網頁的課程,理論知識+實踐項目,雙管齊下,更有利于學員加深對所學知識的理解和運用,真正做到學以致用,從而將知識內化成自身的能力。