script元素的位置及defer、async屬性

傳統上,script元素應該放在頁面的head元素中,但這意味着head元素中的js文件全部下載、解析和執行完成之後,纔會開始呈現頁面的內容,導致瀏覽器在呈現頁面的時候出現延遲,所以,一般都把JavaScript文件放在body元素中頁面內容的後面,即

........

<script src="xx.js"></script>

</body>

備註:css文件加載不會阻塞DOM樹解析,但是會阻塞DOM樹渲染。

關於css文件和JavaScript文件的引入是否堵塞參考https://www.cnblogs.com/heshan1992/p/7029431.html


defer屬性的用途是表明腳本在執行時不會影響頁面的構造。也就是說,腳本會被延遲到整個頁面都解析完畢後再運行。在script元素中設置defer屬性,相當於告訴瀏覽器立即下載,但延遲執行。defer屬性只適用於外部腳本文件。

與defer類似,async只適用於外部腳本文件,並告訴瀏覽器立即下載文件。但與defer不同的是,標記爲async的腳本並不保證按照指定它們的先後順序執行。指定async屬性的目的是不讓頁面等待兩個腳本下載執行,從而異步加載頁面其他內容。



發佈了19 篇原創文章 · 獲贊 21 · 訪問量 6959
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章