国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

JS異步加載的三種實現方式

2024-05-06 15:09:43
字體:
來源:轉載
供稿:網友

js加載的缺點:加載工具方法沒必要阻塞文檔,過多js加載會影響頁面效率,一旦網速不好,那么整個網站將等待js加載而不進行后續渲染等工作。 有些工具方法需要按需加載,用到再加載,不用不加載,。

默認正常模式下下,JS是同步加載的,即優先加載JS,只有當JS文件下載完,dom和css才開始加載,當某些時候我們需要JS異步加載,我們可以通過以下方式來設置異步加載,不同情況下選取不同方式即可

1.defer:defer

    JS異步下載,dom結構解析完(標簽 + 樣式(內容不一定下載完))才異步執行  僅IE能用 內部JS也能用該屬性 異步加載js不允許使用document.write,因為document.write會清除文檔流,js標簽還未加載就會被清除 document.write()可用于初始化頁面

2.(h5)async:async(asynchronous) ajax(asynchronous javascript and XML)

    JS異步加載,加載完畢后立刻異步執行 IE8及以下不兼容 內部JS不能用該屬性

3.除了以上兩種方法,還有一種兼容自己封裝的異步加載方式,即動態添加script標簽也能實現異步加載。

function asyncLoaded(url,callBack){/*url為js的鏈接,callBack為url的js中的函數(該函數調用應該寫到匿名函數中,如function(){console.log(div.getScrollOffset())})*/  var script = document.createElement('script');  script.type = 'text/javascript';  /*if else 這幾句話必須要寫到這位置處,不能放最后,因為if中js加載中script.readyState存在好幾種狀態,  只有狀態改變‘readystatechange'事件才會觸發,但現在瀏覽器加載速度很快,當解析到該事件時JS有可能已經加載完,  所以事件根本不會觸發,所以要寫到前面*/  if(script.readystate){//兼容IE    script.onreadystatechange = function() {//狀態改變事件才觸發      if(script.readyState == 'loaded' || script.readyState == 'complete'){          callBack();        script.onreadystatechange = null;          }    }  }else{    script.onload = function(e){      callBack();    }  }      script.src = url;  document.body.appendChild(script);}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持錯新站長站。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 杭锦后旗| 澎湖县| 大同县| 堆龙德庆县| 苏州市| 镇江市| 松江区| 嘉祥县| 汽车| 麻栗坡县| 延川县| 卢湾区| 辽宁省| 四平市| 上饶县| 陈巴尔虎旗| 钟山县| 广德县| 肇东市| 绥江县| 溧阳市| 象州县| 神农架林区| 沛县| 南漳县| 渑池县| 永和县| 伊川县| 上林县| 调兵山市| 千阳县| 甘孜县| 珠海市| 麻城市| 宣武区| 商城县| 砚山县| 都兰县| 朔州市| 西乌珠穆沁旗| 乐东|