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

理解Javascript文件動態(tài)加載

 更新時間:2016年01月29日 14:45:09   作者:吳統(tǒng)威  
這篇文章主要幫助大家理解Javascript文件動態(tài)加載,解決了Javascript文件動態(tài)加載時出現(xiàn)的錯誤,感興趣的小伙伴們可以參考一下

Javascript文件動態(tài)加載一直是比較困擾的一件事情,像網(wǎng)絡(luò)上傳的比較常見的做法:

function loadjs(fileurl){
 var sct = document.createElement("script");
 sct.src = fileurl;
 document.head.appendChild(sct);
}

然后我們來測試一下結(jié)果:

<html>
  <head>
   <link rel="stylesheet" type="text/css"  media="screen" />
  </head>
  <body>
    <script>
    function loadjs(fileurl){      
     var sct = document.createElement("script");
     sct.src = fileurl;
     document.head.appendChild(sct);
    }
    loadjs("http://code.jquery.com/jquery-1.12.0.js");
    loadjs("http://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js")
    
    loadjs("http://bootboxjs.com/bootbox.js")
    </script>
  </body>
</html>

代碼加載完后,會出現(xiàn)下圖的錯誤:

jquery明明是加載在第一個處理,為什么還是報jQuery不存在的對象呢?

因為這樣加載,相當于開啟了三個線程,只是jquery這個文件先啟動線程,而jquery執(zhí)行完這個線程的時間,超過了后面兩個時間. 因此后面執(zhí)行完的,可能沒能找到j(luò)query這個對象。

然這種方式怎么處理呢?

其實文件的加載是有個狀態(tài)處理的.文件的加載有個onload事件,就是可以監(jiān)聽文件是否加載完成的事件.

因此我們可以考慮這個方法來處理我們想要的結(jié)果.我們用直觀的方式來處理.改進后的代碼如下:

 <html>
  <head>
   <link rel="stylesheet" type="text/css"  media="screen" />
  </head>
  <body>
    <script>
    
    function loadjs(fileurl, fn){      
     var sct = document.createElement("script");
     sct.src = fileurl;
     if(fn){
      sct.onload = fn;
     }
     document.head.appendChild(sct);
    }


    loadjs("http://code.jquery.com/jquery-1.12.0.js",function(){
     loadjs("http://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js",function(){
        loadjs("http://bootboxjs.com/bootbox.js")
     })
    });
      
    
    </script>
  </body>
</html>

OK,執(zhí)行完這個代碼之后,加載文件都是在前一個加載完成后,才會加載另外一個,這樣就不會造成找不到用到的對象了.

然后我們來執(zhí)行一個彈出框的效果,代碼里面使用了 Bootbox.js 插件. 加載代碼如下:

loadjs("http://code.jquery.com/jquery-1.12.0.js",function(){
  loadjs("http://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js",function(){
       loadjs("http://bootboxjs.com/bootbox.js",function(){
          bootbox.alert("Hello world!", function() {
           Example.show("Hello world callback");
          });
       })
   })
 });

刷新頁面,就會直接顯示彈出框:

動態(tài)加載的代碼,往往容易在這里花費很多時間調(diào)試.大家最好的辦法就是寫一個最簡單的例子,理解其中的原因. 這里的代碼都可以進行封裝,還可以加入CSS文件的加載.作為自己的插件使用。

相關(guān)文章

  • JS實現(xiàn)簡易刻度時鐘示例代碼

    JS實現(xiàn)簡易刻度時鐘示例代碼

    本篇文章主要介紹了JS實現(xiàn)簡易刻度時鐘示例代碼的資料,這里整理了詳細的代碼,有需要的小伙伴可以參考下。
    2017-03-03
  • JS刪除數(shù)組指定值常用方法詳解

    JS刪除數(shù)組指定值常用方法詳解

    這篇文章主要介紹了JS刪除數(shù)組指定值常用方法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • 使用js畫圖之正弦曲線

    使用js畫圖之正弦曲線

    這篇文章主要介紹了使用js繪制幾何圖形的方法的系列文章,本文主要講訴正弦曲線的繪制方法,需要的朋友可以參考下
    2015-01-01
  • JavaScript實現(xiàn)三級聯(lián)動菜單效果

    JavaScript實現(xiàn)三級聯(lián)動菜單效果

    這篇文章主要為大家詳細介紹了三級聯(lián)動菜單效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • JS數(shù)組中常用方法技巧學會進階成為大佬

    JS數(shù)組中常用方法技巧學會進階成為大佬

    這篇文章主要為大家介紹了JS數(shù)組中常用的方法技巧,學會了你就在進階成為大佬的道路上又邁進了一步,希望能夠有所幫助,祝大家多多進步
    2021-10-10
  • JavaScript數(shù)據(jù)結(jié)構(gòu)之二叉查找樹的定義與表示方法

    JavaScript數(shù)據(jù)結(jié)構(gòu)之二叉查找樹的定義與表示方法

    這篇文章主要介紹了JavaScript數(shù)據(jù)結(jié)構(gòu)之二叉查找樹的定義與表示方法,簡單講述了二叉查找樹的概念、特點及javascript針對二叉查找樹的創(chuàng)建、插入、遍歷等操作相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2017-04-04
  • JS實現(xiàn)圖片橫向滾動效果示例代碼

    JS實現(xiàn)圖片橫向滾動效果示例代碼

    圖片橫向滾動效果,大家可能都已經(jīng)很熟悉了,本文為大家介紹下使用js實現(xiàn)橫向滾動效果,喜歡的朋友可以參考下,希望對大家有所幫助
    2013-09-09
  • JS面試之手寫節(jié)流防抖詳解

    JS面試之手寫節(jié)流防抖詳解

    作為一個程序員,代碼實現(xiàn)才是能力體現(xiàn),在大部分面試的時候,我們都會被要求手寫代碼實現(xiàn)一個功能,本文總結(jié)了一下經(jīng)常被面試官問到的節(jié)流和防抖功能的實現(xiàn),分享給有需要的小伙伴
    2023-07-07
  • JavaScript實現(xiàn)翻轉(zhuǎn)圖片的三種方法小結(jié)

    JavaScript實現(xiàn)翻轉(zhuǎn)圖片的三種方法小結(jié)

    有時,我們可能需要翻轉(zhuǎn)Web應(yīng)用中的媒體元素,所以這篇文章小編為大家詳細介紹了三種使用JavaScript翻轉(zhuǎn)圖片的方法,希望對大家有所幫助
    2024-01-01
  • Electron 打包問題:electron-builder 下載各種依賴出錯(推薦)

    Electron 打包問題:electron-builder 下載各種依賴出錯(推薦)

    這篇文章主要介紹了Electron 打包問題:electron-builder 下載各種依賴出錯,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07

最新評論