博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自定义异步加载资源插件
阅读量:6279 次
发布时间:2019-06-22

本文共 2927 字,大约阅读时间需要 9 分钟。

/* 已加载文件缓存列表,用于判断文件是否已加载过,若已加载则不再次加载*/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=["./jquery-3.2.1.js"];Import.LoadFileList(FilesArray,function(){    /*这里写加载完成后需要执行的代码或方法*/    Import.LoadFileList(['./index.js'],function () {            })});

  

转载于:https://www.cnblogs.com/webSong/p/7397395.html

你可能感兴趣的文章
[使用帮助] PHPCMS V9内容模块PC标签调用说明
查看>>
关于FreeBSD的CVSROOT的配置
查看>>
基于RBAC权限管理
查看>>
基于Internet的软件工程策略
查看>>
数学公式的英语读法
查看>>
留德十年
查看>>
迷人的卡耐基说话术
查看>>
PHP导出table为xls出现乱码解决方法
查看>>
PHP问题 —— 丢失SESSION
查看>>
Java中Object类的equals()和hashCode()方法深入解析
查看>>
数据库
查看>>
Vue------第二天(计算属性、侦听器、绑定Class、绑定Style)
查看>>
dojo.mixin(混合进)、dojo.extend、dojo.declare
查看>>
Python 数据类型
查看>>
iOS--环信集成并修改头像和昵称(需要自己的服务器)
查看>>
PHP版微信权限验证配置,音频文件下载,FFmpeg转码,上传OSS和删除转存服务器本地文件...
查看>>
教程前言 - 回归宣言
查看>>
PHP 7.1是否支持操作符重载?
查看>>
Vue.js 中v-for和v-if一起使用,来判断select中的option为选中项
查看>>
Java中AES加密解密以及签名校验
查看>>