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

首頁 > 編程 > JavaScript > 正文

理解Javascript文件動態加載

2019-11-20 10:39:28
字體:
來源:轉載
供稿:網友

Javascript文件動態加載一直是比較困擾的一件事情,像網絡上傳的比較常見的做法:

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

然后我們來測試一下結果:

<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>

代碼加載完后,會出現下圖的錯誤:

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

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

然這種方式怎么處理呢?

其實文件的加載是有個狀態處理的.文件的加載有個onload事件,就是可以監聽文件是否加載完成的事件.

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

 <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,執行完這個代碼之后,加載文件都是在前一個加載完成后,才會加載另外一個,這樣就不會造成找不到用到的對象了.

然后我們來執行一個彈出框的效果,代碼里面使用了 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");          });       })   }) });

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 临夏县| 宁城县| 通海县| 大庆市| 古蔺县| 江都市| 台前县| 陕西省| 泗水县| 龙南县| 射阳县| 阿巴嘎旗| 岳西县| 富顺县| 赣榆县| 温宿县| 宁海县| 榆社县| 连平县| 大兴区| 济南市| 旬阳县| 巴林左旗| 浦县| 新平| 定州市| 阿拉善盟| 崇明县| 苏州市| 房山区| 黄平县| 昭觉县| 德庆县| 竹溪县| 安义县| 成安县| 武平县| 乌鲁木齐市| 德州市| 宾川县| 房山区|