JS 动态加载js文件和css文件 同步/异步的两种简单
网络编程 2021-07-04 20:00www.168986.cn编程入门
狼蚁网站SEO优化长沙网络推广就为大家带来一篇JS 动态加载js文件和css文件 同步/异步的两种简单方式。长沙网络推广觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随长沙网络推广过来看看吧
/*动态添加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文件,sues:加载成功回调函数*/ LoadFileList:function(_files,sues){ 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){ sues(); } }) } } /*加载JS文件,url:文件路径,suess:加载成功回调函数*/ function loadFile(url, suess) { 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"; } suess = suess || function(){}; fileObj.onload = fileObj.onreadystatechange = function() { if (!this.readyState || 'loaded' === this.readyState || 'plete' === this.readyState) { suess(); classcodes.push(url) } } document.getElementsByTagName('head')[0].appendChild(fileObj); }else{ suess(); } } /*获取文件类型,后缀名,小写*/ 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文件 同步/异步的两种简单方式的全部内容了,希望对大家有所帮助,多多支持狼蚁SEO~
编程语言
- 机械手焊接机器人编程 机械手焊接设备编程
- vb数据库编程实例,vb做数据库
- tiobe世界编程语言排行榜,全球编程语言排行
- 成都java编程培训 成都it编程培训中心
- 编程基础培训,编程基础知识培训
- flash游戏编程基础教程,flash游戏开发教程
- 不会英语能学编程吗 不会英语可以学程序员吗
- 爱心代码编程C语言 爱心代码编程c语言公式
- c语言编程学习入门 c语言编程快速入门
- 西门子plc编程培训 西门子plc编程培训班
- 哪里可以学编程 台州哪里可以学编程
- 少儿编程哪个好 少儿编程哪个品牌好
- 编程是什么意思,图形编程是什么意思
- c语言编程软件下载,c语言编程软件在哪下载
- java编程软件下载,java编程下载手机版
- ug编程培训学校,ug编程培训教程