2012-11-01 34 views
9

HTML5引入defer屬性,用於其加載可以在HTML頁面中推遲的腳本。 defer可用於在DOM之前不需要加載的任何腳本(也就是說,在DOM準備好之前不要弄亂DOM)。推遲的腳本和放在頁面主體末尾的腳本之間有什麼區別?

很長一段時間,Web開發人員建議將不需要在DOM之前加載的所有腳本放在head頁面中,而是在body標籤結束之前。

使用defer和長期實踐的意見有什麼區別?第一個替代後者嗎?

我很欣賞任何答案。謝謝。

+0

即使使用延遲,我相信腳本仍然會被下載,並且可能會減慢整個頁面加載的速度 – Evgeny

+2

將腳本放在底部的想法不僅延遲執行,而且延遲下載 – Evgeny

+0

Thanks @ EugeneXa。 – rodrigoalves

回答

1

異步和延遲腳本都會立即開始下載,而不會暫停解析器,並且都支持可選的onload處理程序來解決執行初始化的常見需求,這取決於腳本。

webkit blog,所以在所有瀏覽器中的行爲不一定是相同的。所以,如果腳本仍處於末尾,性能會更好,因爲它們將在稍後下載。

編輯2017年:瀏覽器支持現在好多了,所以你可能會頭腦中的異步/推遲腳本。將它們放在底部仍然是一個更安全的選擇;新的瀏覽器仍然會盡早下載它們,即使它們不在腦海。

+0

明白了,謝謝。 – rodrigoalves

+3

爲什麼稍後下載腳本時性能會更好?腳本儘快下載時性能會不會更好? –

+0

@RuudLenders,因爲當時支持是不完整的,所以很多瀏覽器會立即下載腳本,這會阻止渲染,直到腳本被下載並執行。現在的支持在四年半後變得更好,但瀏覽器開始下載的時間差異很小(如果有的話),所以我仍然會將它們放在主體的末尾。 –

相關問題