1. defer
立即下載,延遲執行。
HTML5 規范要求腳本按照他們出現的順序執行,因此第一個延遲腳本會先於第二個延遲腳本執行,而這兩個腳本會優先於 DOMContentLoaded 事件觸發前執行;
在現實當中,延遲腳本並不一定會按照順序執行,也不一定在 DOMCotentLoaded 事件出發前執行,一次最好只包含一個延遲腳本;
使用范圍:
只適用於外部腳本文件;HTML5 已經規定,因此支持HTML5的實現會忽略給嵌入腳本設置的defer屬性
PS: 在XHTML文檔中,要把defer屬性設置為 defer="defer"
2. async
立即下載,異步執行,異步加載頁面其他內容
亂序執行,不能保證執行順序,所以要確保腳本文件不相互依賴;建議異步腳本不要在加載期間修改 DOM
異步腳本一定會在load事件之前執行,但可能會在 DOMContentLoaded 事件觸發之前或者之后執行。
使用范圍:
只適用於外部腳本文件;HTML5 已經規定,因此支持HTML5的實現會忽略給嵌入腳本設置的defer屬性
PS: 在XHTML文檔中,要把defer屬性設置為 defer="defer"