今天在網上找到了一個可以動態加載js文件的js加載器,具體代碼如下:
JsLoader.js
1 var MiniSite=new Object(); 2 /** 3 * 判斷瀏覽器 4 */ 5 MiniSite.Browser={ 6 ie:/msie/.test(window.navigator.userAgent.toLowerCase()), 7 moz:/gecko/.test(window.navigator.userAgent.toLowerCase()), 8 opera:/opera/.test(window.navigator.userAgent.toLowerCase()), 9 safari:/safari/.test(window.navigator.userAgent.toLowerCase()) 10 }; 11 /** 12 * JsLoader對象用來加載外部的js文件 13 */ 14 MiniSite.JsLoader={ 15 /** 16 * 加載外部的js文件 17 * @param sUrl 要加載的js的url地址 18 * @fCallback js加載完成之后的處理函數 19 */ 20 load:function(sUrl,fCallback){ 21 var _script=document.createElement('script'); 22 _script.setAttribute('charset','gbk'); 23 _script.setAttribute('type','text/javascript'); 24 _script.setAttribute('src',sUrl); 25 document.getElementsByTagName('head')[0].appendChild(_script); 26 if(MiniSite.Browser.ie){ 27 _script.onreadystatechange=function(){ 28 if(this.readyState=='loaded'||this.readyStaate=='complete'){ 29 //fCallback(); 30 if(fCallback!=undefined){ 31 fCallback(); 32 } 33 34 } 35 }; 36 }else if(MiniSite.Browser.moz){ 37 _script.onload=function(){ 38 //fCallback(); 39 if(fCallback!=undefined){ 40 fCallback(); 41 } 42 }; 43 }else{ 44 //fCallback(); 45 if(fCallback!=undefined){ 46 fCallback(); 47 } 48 } 49 } 50 };
JsLoader.js測試
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <!--引入js加載器 --> 5 <script type="text/javascript" src="js/JsLoader.js"></script> 6 <title>JsLoaderTest.html</title> 7 <script type="text/javascript"> 8 if(MiniSite.Browser.ie){ 9 //動態加載Js 10 MiniSite.JsLoader.load("js/jquery-1.9.1.js",function(){ 11 alert("動態加載的是jquery-1.9.1.js"); 12 $(function(){ 13 alert("jquery-1.9.1.js動態加載完成之后做的處理操作"); 14 }); 15 }); 16 }else{ 17 MiniSite.JsLoader.load("js/jquery-2.0.3.js",function(){ 18 alert("動態加載的是jquery-2.0.3.js"); 19 $(function(){ 20 alert("jquery-2.0.3.js動態加載完成之后做的處理操作"); 21 }); 22 }); 23 } 24 </script> 25 </head> 26 27 <body> 28 29 </body> 30 </html>
測試結果如下:
IE瀏覽器下測試結果:
google瀏覽器下的測試結果: