2017-03-28 49 views
1

我已經閱讀過一些第三方供應商的文檔(例如adsense),他們的腳本必須在<head>中。<script>標籤有沒有必要去<head>?

對於async腳本我很確定這是不真實的,因爲異步標誌不能保證什麼時候腳本將被執行。但我對非異步腳本也很好奇。說腳本標記必須進入<head>有意義嗎?

(這是假設頁面中沒有任何代碼依賴某些已加載的腳本)。

要清楚,我的問題不是「它是一個好主意」,或者「什麼是性能好處」。

更像是:「在技術上可行的是腳本無法工作,因爲它不在<head>?」

謝謝!

+0

我個人的經驗法則是,如果頁面需要腳本來顯示頁面上的任何內容,那麼您最好將它包含在頭部。任何稍後添加功能的東西都應該在關閉正文標記之前停下來。我還沒有寫一個頁面,這個微型優化可以帶來任何真正的區別,但... – Shadow

回答

2

<head>標籤中的<script></script>將停止解析DOM,直到腳本加載完畢。將腳本放在這裏,需要在解析DOM之前加載。不要在這裏放置任何不必要的腳本,因爲它會阻止解析DOM。這導致頁面緩慢加載。

請參見:https://stackoverflow.com/a/24070373/47589

+1

它不一定會停止*解析*,它會停止*渲染*和*執行*;但它可能會繼續解析其他非阻塞資源。 – Abhitalks

+0

它不一定會阻止任何事情,行爲取決於它是「異步」還是「延遲」或兩者都不。 @amy在解析DOM之前,需要加載一個腳本的例子是什麼? (除了依賴於頁面的腳本以外)。 –

+0

任何創建自定義Web組件的腳本都需要在DOM解析之前加載。否則,DOM解析器將不知道如何處理自定義元素。 – Amy

0

上的腳本標籤的MDN page不會對腳本標籤的位置的任何要求。事實上,現在的趨勢似乎是將腳本放在身體的最後。

+0

是的,但有一個原因,爲了不阻止用戶界面,除非你真的需要腳本 – amd

0

的標籤可以在HTML頁面的任何位置,但在標籤將在瀏覽器的DOM元素的創建放慢放置,因爲瀏覽器需要得到所有的腳本標記並移動到html元素,

最佳做法是將腳本標記保留在DOM元素的底部,因爲可視化html元素將在腳本獲得加載之前加載。

它主要取決於腳本的功能和頁面的業務邏輯。

相關問題