zoukankan      html  css  js  c++  java
  • 自定义异步加载资源插件

    /* 已加载文件缓存列表,用于判断文件是否已加载过,若已加载则不再次加载*/
    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 () {
            
        })
    });
    

      

  • 相关阅读:
    JavaScript 为字符串添加样式 【每日一段代码80】
    JavaScript replace()方法 【每日一段代码83】
    JavaScript for in 遍历数组 【每日一段代码89】
    JavaScript 创建用于对象的模板【每日一段代码78】
    html5 css3 新元素简单页面布局
    JavaScript Array() 数组 【每日一段代码88】
    JavaScript toUTCString() 方法 【每日一段代码86】
    位运算
    POJ 3259 Wormholes
    POJ 3169 Layout
  • 原文地址:https://www.cnblogs.com/webSong/p/7397395.html
Copyright © 2011-2022 走看看