欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JS異步加載的三種實現(xiàn)方式

 更新時間:2017年03月16日 11:47:49   作者:Walker-lyl  
本篇文章主要介紹了JS異步加載的三種實現(xiàn)方式,有些時候我們需要JS異步加載,這里整理了詳細的代碼,有需要的小伙伴可以參考下。

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

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

1.defer:defer

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

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

  1. JS異步加載,加載完畢后立刻異步執(zhí)行
  2. IE8及以下不兼容
  3. 內(nèi)部JS不能用該屬性

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

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

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • bootstrap+jQuery 實現(xiàn)下拉菜單中復(fù)選框全選和全不選效果

    bootstrap+jQuery 實現(xiàn)下拉菜單中復(fù)選框全選和全不選效果

    這篇文章主要給大家介紹了關(guān)于利用bootstrap+jQuery 實現(xiàn)下拉菜單中復(fù)選框全選和全不選效果的相關(guān)資料,文中給出了完整的示例代碼供大家參考學(xué)習(xí),對大家具有一定的參考學(xué)習(xí)價值,需要的朋友下面來一起看看吧。
    2017-06-06
  • 微信小程序?qū)崿F(xiàn)多宮格抽獎活動

    微信小程序?qū)崿F(xiàn)多宮格抽獎活動

    這篇文章主要為大家詳細介紹了微信小程序?qū)崿F(xiàn)多宮格抽獎功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • Bootstrap基本樣式學(xué)習(xí)筆記之圖片(6)

    Bootstrap基本樣式學(xué)習(xí)筆記之圖片(6)

    這篇文章主要介紹了Bootstrap學(xué)習(xí)筆記之圖片基本樣式的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • javascript常用函數(shù)(2)

    javascript常用函數(shù)(2)

    這篇文章主要介紹了javascript常用函數(shù),再來15個常用函數(shù),都具有很高的實用性,感興趣的小伙伴們可以參考一下
    2015-11-11
  • TypeScript泛型使用詳細介紹

    TypeScript泛型使用詳細介紹

    泛型是靜態(tài)類型語言的基本特征,允許將類型作為參數(shù)傳遞給另一個類型、函數(shù)、或者其他結(jié)構(gòu)。TypeScript 支持泛型作為將類型安全引入組件的一種方式。這些組件接受參數(shù)和返回值,其類型將是不確定的,直到它在代碼中被使用
    2022-10-10
  • 在html頁面中包含共享頁面的方法

    在html頁面中包含共享頁面的方法

    在靜態(tài)html頁面中引用子頁面,類似動態(tài)頁面方式inlcude一個共享的小片段
    2008-10-10
  • JavaScript 中判斷變量是否為數(shù)字的示例代碼

    JavaScript 中判斷變量是否為數(shù)字的示例代碼

    這篇文章主要介紹了JavaScript 中判斷變量是否為數(shù)字的示例代碼,代碼簡單易懂對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • 微信小程序?qū)崿F(xiàn)的點擊按鈕 彈出底部上拉菜單功能示例

    微信小程序?qū)崿F(xiàn)的點擊按鈕 彈出底部上拉菜單功能示例

    這篇文章主要介紹了微信小程序?qū)崿F(xiàn)的點擊按鈕 彈出底部上拉菜單功能,結(jié)合實例形式分析了action-sheet組件及事件響應(yīng)簡單使用技巧,需要的朋友可以參考下
    2018-12-12
  • JS實現(xiàn)全屏預(yù)覽F11功能的示例代碼

    JS實現(xiàn)全屏預(yù)覽F11功能的示例代碼

    這篇文章主要介紹了JS實現(xiàn)全屏預(yù)覽F11功能的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • javascript中xml操作實現(xiàn)代碼

    javascript中xml操作實現(xiàn)代碼

    好久沒寫了。感覺今時今日,HTML5 還依然只是一種玩票的東東。但愿 w3c 的標準可以早一點出臺,不要讓各種瀏覽器的兼容問題和支持程度搞死
    2011-11-11

最新評論