script標(biāo)簽在頭部時(shí),怎么防止阻斷?
給script標(biāo)簽 添加async或defer屬性
在<script>元素中設(shè)置defer屬性,相當(dāng)于告訴瀏覽器立即下載js文件,
但是等到整個(gè)頁(yè)面都解析完畢之后再執(zhí)行js
<script src="xxxxx.js" type="text/javascript" defer>
同樣與defer類似,async只適用于外部腳本文件,并告訴瀏覽器立即下載文件
但與defer不同的是,標(biāo)記為async的腳本并不保證按照它們的先后順序執(zhí)行。
<script src="xxxxx.js" type="text/javascript"async>
就是這兩個(gè)屬性都會(huì)使script標(biāo)簽異步加載,然而執(zhí)行的時(shí)機(jī)是不一樣的。
看下邊這張圖:

image.png
藍(lán)色線代表網(wǎng)絡(luò)讀取,紅色線代表執(zhí)行時(shí)間,這倆都是針對(duì)腳本的;綠色線代表 HTML 解析。