成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

javascript如何按順序加載運行js方法-創(chuàng)新互聯(lián)

這篇文章將為大家詳細講解有關(guān)javascript如何按順序加載運行js方法,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:域名申請、雅安服務(wù)器托管、營銷軟件、網(wǎng)站建設(shè)、靖遠網(wǎng)站維護、網(wǎng)站推廣。

瀏覽器會異步加載 javascript 文件,但是會按照引用文件中的書寫順序從上到下執(zhí)行解析 javascript

Defer屬性標(biāo)記

defer是html4.0中定義的,該屬性使得瀏覽器能延遲腳本的執(zhí)行,等文檔完成解析完成后會按照他們在文檔出現(xiàn)順序再去下載解析。

也就是說defer屬性的 script 就類似于將 script 放在body中的加載 效果一致.

但是defer屬性在各個瀏覽器中支持程度有點不同,就是說,有的瀏覽器不完全支持.

Async屬性標(biāo)注

async是HTML5新增的屬性, 大部分先進支持該屬性的.
該屬性的作用是讓腳本能異步加載,也就是說當(dāng)瀏覽器遇到async屬性的 script 時瀏覽器加載css一樣是異步加載的

javascript 動態(tài)加載js文件

原理很簡單,創(chuàng)建一個 script 節(jié)點,給節(jié)點賦予 script 的屬性,然后 append 到 dom 的 head 標(biāo)簽中.

function loadJS(url){
  var Script = document.createElement('script');
  Script.setAttribute('src', url);
  Script.setAttribute('type', 'text/javascript');
  document.body.appendChild(Script);
  return Script;
}

如果我們同時加載多個 javascript 文件

loadJS('a.js');
loadJS('b.js');

上面的效果是,a.js 和 b.js 文件會被異步同時加載,如果 b.js 文件比 a.js 文件小的話,很可能先加載執(zhí)行 b.js ,完全不會按照書寫結(jié)果加載執(zhí)行

所以,如果你的 b.js 文件有依賴 a.js 的東西,那么就會報錯,因為解釋執(zhí)行b.js 的時候,a.js 還在加載中.

控制javascript 加載執(zhí)行順序

我們對代碼做如下改進

function loadJS(url, success) {
      var domScript = document.createElement('script');
      domScript.src = url;
      success = success || function () {
          };
      domScript.onload = domScript.onreadystatechange = function () {
        if (!this.readyState || 'loaded' === this.readyState || 'complete' === this.readyState) {
          success();
          this.onload = this.onreadystatechange = null;
          this.parentNode.removeChild(this);
        }
      }
      document.getElementsByTagName('head')[0].appendChild(domScript);
    }

通過script 節(jié)點上的 onload 和 onreadystatechange 屬性來監(jiān)聽節(jié)點 src 是否加載完成

如果成功,調(diào)用回調(diào)函數(shù) success();

我們在調(diào)用此方法的時候,可以通過 loadJS 回調(diào)函數(shù)來知道當(dāng)前節(jié)點已經(jīng)加載完成,然后在回調(diào)函數(shù)里繼續(xù)加載其他 script 文件

loadJS(getUrl('a.js'), function () {
      loadJS(getUrl('b.js'), function () {
        console.log('a.js ,b.js 加載完成');
      });
});

通過上面的方法加載,是一種同步阻塞加載, a.js 加載完成后才會加載執(zhí)行 b.js 文件.

如果你的 javascript 文件沒有相互依賴關(guān)系,不要使用這種方法.

關(guān)于“javascript如何按順序加載運行js方法”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

本文名稱:javascript如何按順序加載運行js方法-創(chuàng)新互聯(lián)
文章位置:http://jinyejixie.com/article6/ddshig.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、動態(tài)網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、定制開發(fā)、自適應(yīng)網(wǎng)站、響應(yīng)式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化
兴化市| 同心县| 永登县| 榆树市| 万宁市| 汶川县| 雷州市| 朝阳县| 改则县| 调兵山市| 扎赉特旗| 会宁县| 浠水县| 甘泉县| 宝山区| 利川市| 曲松县| 延边| 抚顺市| 平果县| 赤峰市| 大新县| 额敏县| 民和| 长阳| 密云县| 鄂托克前旗| 新龙县| 遂溪县| 太和县| 龙口市| 宁波市| 土默特右旗| 鸡西市| 故城县| 普格县| 清流县| 武乡县| 安阳县| 伊春市| 慈利县|