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

首頁 > 編程 > JavaScript > 正文

JS 動態加載js文件和css文件 同步/異步的兩種簡單方式

2019-11-20 08:54:14
字體:
來源:轉載
供稿:網友
/*動態添加js或css,URL:文件路徑,FileType:文件類型(js/css)*/function AddJsFiles(URL,FileType){  var oHead = document.getElementsByTagName('HEAD').item(0);  var addheadfile;  if(FileType=="js"){    addheadfile= document.createElement("script");    addheadfile.type = "text/javascript";    addheadfile.src=URL;  }else{    addheadfile= document.createElement("link");    addheadfile.type = "text/css";    addheadfile.rel="stylesheet";    addheadfile.rev = "stylesheet";    addheadfile.media = "screen";    addheadfile.href=URL;  }  oHead.appendChild( addheadfile);}
/*方法調用*/AddJsFiles("js/index.js","js");AddJsFiles("css/index.css","css");

經測試發現以上方法進行文件加載時,文件是異步加載的,這樣就可能導致加載文件后立即使用文件中的方法或變量會產生錯誤的情況,

所以以下采用同步加載的方法,當文件加載完成后再去執行相應的代碼或方法

/*5.加載文件*//* 已加載文件緩存列表,用于判斷文件是否已加載過,若已加載則不再次加載*/var classcodes =[];window.Import={  /*加載一批文件,_files:文件路徑數組,可包括js,css,less文件,succes:加載成功回調函數*/  LoadFileList:function(_files,succes){    var FileArray=[];    if(typeof _files==="object"){      FileArray=_files;    }else{      /*如果文件列表是字符串,則用,切分成數組*/      if(typeof _files==="string"){        FileArray=_files.split(",");      }    }    if(FileArray!=null && FileArray.length>0){      var LoadedCount=0;      for(var i=0;i< FileArray.length;i++){        loadFile(FileArray[i],function(){          LoadedCount++;          if(LoadedCount==FileArray.length){            succes();          }        })      }    }    /*加載JS文件,url:文件路徑,success:加載成功回調函數*/    function loadFile(url, success) {      if (!FileIsExt(classcodes,url)) {        var ThisType=GetFileType(url);        var fileObj=null;        if(ThisType==".js"){          fileObj=document.createElement('script');          fileObj.src = url;        }else if(ThisType==".css"){          fileObj=document.createElement('link');          fileObj.href = url;          fileObj.type = "text/css";          fileObj.rel="stylesheet";        }else if(ThisType==".less"){          fileObj=document.createElement('link');          fileObj.href = url;          fileObj.type = "text/css";          fileObj.rel="stylesheet/less";        }        success = success || function(){};        fileObj.onload = fileObj.onreadystatechange = function() {          if (!this.readyState || 'loaded' === this.readyState || 'complete' === this.readyState) {            success();            classcodes.push(url)          }        }        document.getElementsByTagName('head')[0].appendChild(fileObj);      }else{        success();      }    }    /*獲取文件類型,后綴名,小寫*/    function GetFileType(url){      if(url!=null && url.length>0){        return url.substr(url.lastIndexOf(".")).toLowerCase();      }      return "";    }    /*文件是否已加載*/    function FileIsExt(FileArray,_url){      if(FileArray!=null && FileArray.length>0){        var len =FileArray.length;        for (var i = 0; i < len; i++) {          if (FileArray[i] ==_url) {            return true;          }        }      }      return false;    }  }}var FilesArray=["js/index.js","js/ClassInherit1.js","js/highcharts_2.21.js","css/index.css"];Import.LoadFileList(FilesArray,function(){  /*這里寫加載完成后需要執行的代碼或方法*/});

以上就是小編為大家帶來的JS 動態加載js文件和css文件 同步/異步的兩種簡單方式的全部內容了,希望對大家有所幫助,多多支持武林網~

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 涟源市| 太康县| 西华县| 高陵县| 伊通| 馆陶县| 苏州市| 鲁山县| 定南县| 宁海县| 丹阳市| 东乌珠穆沁旗| 泗洪县| 张掖市| 泸溪县| 炎陵县| 阳谷县| 尚志市| 井冈山市| 墨江| 资阳市| 泰兴市| 富顺县| 彰化县| 建瓯市| 宕昌县| 集安市| 铜山县| 临潭县| 万宁市| 上林县| 清新县| 长治县| 民和| 临沭县| 林周县| 股票| 娄烦县| 石门县| 乐至县| 阳谷县|