動態添加js的方法


var Skip={};
//獲取XMLHttpRequest對象(提供客戶端同http服務器通訊的協議)
Skip.getXmlHttpRequest=function (){
if ( window.XMLHttpRequest ) // 除了IE外的其它瀏覽器
return new XMLHttpRequest() ;
else if ( window.ActiveXObject ) // IE
return new ActiveXObject("MsXml2.XmlHttp") ;
},
//導入內容
Skip.includeJsText =function (rootObject,jsText){
if ( rootObject != null ){
var oScript = document.createElement( "script" );
oScript.type = "text/javascript";
//oScript.id = sId;
//oScript.src = fileUrl;
//oScript.defer = true;
oScript.text = jsText;
rootObject.appendChild(oScript);
//alert(oScript.text);
}
},
//導入文件
Skip.includeJsSrc =function (rootObject, fileUrl){
if ( rootObject != null ){
var oScript = document.createElement( "script" );
oScript.type = "text/javascript";
oScript.src = fileUrl;
rootObject.appendChild(oScript);
}
},
//同步加載
Skip.addJs=function(rootObject, url){
var oXmlHttp = Skip.getXmlHttpRequest() ;
oXmlHttp.onreadystatechange = function(){//其實當在第二次調用導入js時,因為在瀏覽器當中存在這個*.js文件了,它就不在訪問服務器,也就不在執行這個方法了,這個方法也只有設置成異步時才用到
if ( oXmlHttp.readyState == 4 ){ //當執行完成以后(返回了響應)所要執行的
if ( oXmlHttp.status == 200 || oXmlHttp.status == 304 ){ //200有讀取對應的url文件,404表示不存在這個文件
Skip.includeJsSrc( rootObject, url);
} else{
alert( 'XML request error: ' + oXmlHttp.statusText + ' (' + oXmlHttp.status + ')' ) ;
}
}
}
//1.True 表示腳本會在 send() 方法之后繼續執行,而不等待來自服務器的響應,並且在open()方法當中有調用到onreadystatechange()這個方法。通過把該參數設置為 "false",可以省去額外的 onreadystatechange 代碼,它表示服務器返回響應后才執行send()后面的方法.
//2.同步執行oXmlHttp.send()方法后oXmlHttp.responseText有返回對應的內容,而異步還是為空,只有在oXmlHttp.readyState == 4時才有內容,反正同步的在oXmlHttp.send()后的操作就相當於oXmlHttp.readyState == 4下的操作,它相當於只有了這一種狀態.
oXmlHttp.open('GET', url, false); //url為js文件時,ie會自動生成 '<script src="*.js" type="text/javascript"> </scr ipt>',ff不會
oXmlHttp.send(null);
Skip.includeJsText(rootObject,oXmlHttp.responseText);
}
var rootObject = document.head;
Skip.addJs(rootObject, "config.js")


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM