簡體   English   中英

javascript必須在head標簽中嗎?

[英]Does javascript have to be in the head tags?

我相信javascript可以在任何地方(幾乎),但我幾乎總是在<head></head>之間看到它。 我正在使用jquery並想知道它是否由於某種原因必須在head標簽中,或者如果我移動它會破壞某些東西。 謝謝。

編輯:為什么它幾乎總是在頭標簽?

不,它可以在任何地方。 實際上,將它放在文檔的底部有時是個好主意。 有關原因的解釋,請參閱http://developer.yahoo.com/performance/rules.html#js_bottom

JavaScript在文檔中的任何位置執行。 如果您將內聯JavaScript放在正文中,它將在瀏覽器到達時執行。 如果你使用$(document).ready(...)來執行事情,那么定位應該無關緊要。 否則,您可能會發現重要案例。 一般來說,沒關系。 腳本最終在head標簽大多是出於傳統。

基本上,瀏覽器會停止呈現頁面,直到.js文件被完全下載和處理。 由於它們在HTML到達時逐步呈現頁面,因此引用后面的.js文件,將獲得更好的用戶體驗。

因此,訣竅是在head僅包含絕對重要的腳本,並在頁面末尾加載剩余的腳本。

當瀏覽器讀取腳本標記直到它處理完畢后,一切都會停止。 因此,如果您盡可能地向下移動腳本標記,您的頁面將更快地呈現 - 理想情況是在結束正文標記之前。 顯然總的加載時間是相同的。

在使用jQuery之前,您必須確保實際上不調用任何jQuery函數。

JS現在變化如此之快,每周都有新的框架出現,每個人都聲稱自己的倡導者是“蜜蜂的膝蓋”。

Gumbo是正確的,可以在任何支持內聯元素的地方引用腳本標記,但是加載外部JS文件或在標記中包含JS代碼的選擇是根據具體情況單獨做出的決定。

是的,瀏覽器在解析時將停止加載JS,因此,您需要考慮這將如何影響頁面加載速度和功能。

截至2015年中期(流行的答案是在2009年7月),將移動優先級設置為頁面加載速度需要對移動/單元桅桿有兩個請求限制,在3G下為您提供28k(2x 14kb(是))有效負載。 你需要考慮28k的“繪畫到屏幕”(谷歌的名字)。 這應該為用戶提供足夠的頁面內容/交互性,以確保他們在正確的頁面或正確的軌道上。 Jquery縮小目前是87.6lkb,所以“只是不會削減芥末!”

這就是為什么大多數移動頁面在加載任何東西之前都會停留幾秒鍾,甚至在4G上! 不要允許。 頁面速度為王,用戶在加載JQuery文件之前點擊后退按鈕。 在3G +下,28k的有效載荷將在<1秒內加載,因此沒有理由說你的頁面在那段時間內不應該開始加載。 下次單擊手機上的鏈接時,請觀看加載欄,然后等待下一頁上的所有標記!

不要根據SO上7年的帖子構建您的頁面(即使它沒有錯,只是過時了)。 決定每個代碼所在的位置,並確保用戶可以在嘗試加載6個JS框架之前使用頁面的最重要方面,這些框架實現了頁面的奢華視覺功能和廣泛的數據綁定。

順便說一句,谷歌更喜歡將JS推到谷底,因為谷歌分析代碼需要是最后一個加載的東西。

在編碼之前先想想!

不, SCRIPT不僅被歸類為head.misc元素,而且還被歸類為特殊元素 ,因此在允許內聯元素的地方允許使用。 因此,您可以在允許內聯元素的任何位置放置SCRIPT

<p>foo <script>document.write("bar")</script></p>

實際上, 有些人建議在結束標記之前SCRIPT元素放在BODY的末尾,以便在加載JavaScript之前解析整個文檔。 這是為了防止JavaScript阻止並行下載。

實際上,出於性能原因,您幾乎總是希望將腳本標記放在頁面底部。 為什么? 您希望首先加載頁面結構和CSS,以便用戶立即看到頁面。 然后,您希望所有行為驅動的代碼最后加載。 YSlow是一個很好的firefox擴展,它將向您展示性能等級。 它給你評分的一個項目是你是否在底部而不是頂部使用javascript。

請注意您可能具有的對延遲的不良影響,具體取決於用戶的瀏覽器以及您將Javascript放在頁面中的確切位置 - 請參閱Steve Souders所說的所有內容,包括他斯坦福大學講座的視頻,並且他的工作成果留在了例如這里 (盡可能地將腳本放在頁面底部等等)。

  1. 因為您不希望JavaScript與HTML混合 - 具有行為的內容。 您最好將它放在一個單獨的文件中。

  2. 在其他地方擁有JS有優點和缺點 - 例如,它將在不同的時間執行,您可以從位於正文中的javascript寫入文檔。

它可以放在headbody標簽中。 請記住,它會在讀取時執行,而不一定在文檔加載完成時執行。 看看這里

在某些情況下,如果腳本位於錯誤的位置,腳本可能無效。 有些JavaScript需要在特定HTML元素之后執行,其他JavaScript需要准確地顯示您希望腳本輸出顯示的位置,其他JavaScript應該位於文檔的頭部。 這實際上取決於代碼的編寫方式。 如果你不確定,你應該在window.load或DOMready上執行你的代碼: http//www.javascriptkit.com/dhtmltutors/domready.shtml

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM