defer 與 async

defer

  • HTML4.01定義的
  • 只適用於外部腳本(IE4~7會支持內嵌腳本的defer屬性)
  • 告訴瀏覽器當即下載,延遲執行,腳本會延遲到整個頁面所有解析完畢以後才運行
  • HTML5規範要求腳本按照他們出現的前後順序執行,第一個延遲腳本先於第二個延遲腳本執行,這兩個腳本會先於DOMContentLoaded事件執行,而在現實瀏覽器中,延遲腳本不必定會按照順序執行,也不必定在DOMContentLoaded事件觸發前執行,所以最好只包含一個延遲腳本。

async

  • HTML5定義的
  • 只適用於外部腳本
  • 與defer不一樣的是,標記爲async的腳本不保證按照指定他們的先手順序執行,所以確保多個腳本之間互不依賴很是重要,指定async屬性的目的是不讓頁面等待兩個腳本下載和執行,從而異步加載頁面其餘內容。爲此,建議腳本不要在加載期間修改DOM。
  • 指定了async屬性的腳本必定會在頁面的load事件前執行,但可能會在DOMContentLoaded事件觸發以前或以後執行
相關文章
相關標籤/搜索