JS之異步加載


   javascript 異步加載的三種方案
1.defer 異步加載,但要等到dom文檔全部解析完才會被執行。只有IE能用。
2.async 異步加載,加載完就執行,async只能加載外部腳本,不能把js寫在script 標簽里。
    1.2 執行時也不阻塞頁面                 當想同時兼容IE和其它瀏覽器該怎么寫?
3.創建script,插入到DOM中,加載完畢后callBack
w3c方法:
  <script src="demo.js" aysnc="aysnc"></script> // w3c標准方法,能在標簽里寫代碼
IE方法:
  <script src="demo.js" defer="defer"></script> //異步加載 只能ie能用,不能在標簽里寫代碼
想讓任何瀏覽器兼容同一個文件,應該怎么寫?
  <script src="demo.js" defer="defer"></script>
  <script src="demo.js" aysnc="aysnc"></script>
這樣寫會起沖突,async加載完立馬會異步執行,defer執行完后會等到文檔解析完才執行,它們不一定誰先加載,加載完之后代碼會出現覆蓋現象。
也可以按第三種方案,按需加載。   
  demo2.js文件
  function test(){
    console.log(a);
}
 
<script>
  var script = document.createElement('script');   //創建
  script.type = 'text/javascript';          //設置
  var src = "dmeo2.js";             //下載文件,當下載時它會發送請求,發請求過程中,頁面已經解析完,系統解析很速度很快 ps:引入dmeo2.js文件
  document.head.appendChild;         //以下兩行,不會執行到,所以會報test未定義
  test();
</script>
window有一種提示機制,onload事件。當觸發onload就說明下載完了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM