代碼示例:
<scriptasync src="myscript.js" onload="myInit()"></script>
<script defer src="myscript.js" onload="myInit()"></script>
帶有async或者defer的script都會立刻下載并不阻塞頁面解析,而且都提供一個可選的onload事件處理, 在script下載完成后調(diào)用,用于做一些和此script相關(guān)的初始化工作.它們的不同之處在于script執(zhí)行的 時機.帶有async的script,一旦下載完成就開始執(zhí)行(當然是在window的onload之前).這意味著這些script 可能不會按它們出現(xiàn)在頁面中的順序來執(zhí)行,如果你的腳本互相依賴并和執(zhí)行順序相關(guān),就有很大的可能出問題, 例如變量或者函數(shù)未定義之類的錯誤. 而對于帶有defer的script,它們會確保按在頁面中出現(xiàn)的順序來執(zhí)行,它們執(zhí)行的時機是在頁面解析完后,但在 DOMContentLoaded事件之前。