图片及js的预加载

loadImage : function (url, dataObj, callback, errorCallback) {
            var self = this;
            var img = new Image(); //创建一个Image对象,实现图片的预下载
            img.src = url;
            if(img.complete) { // 如果图片已经存在于浏览器缓存,直接调用回调函数
                callback.call(img,dataObj);
                return; // 直接返回,不用再处理onload事件
            }
            img.onload = function () { //图片下载完毕时异步调用callback函数。
                callback.call(img,dataObj);//将回调函数的this替换为Image对象
            };
            if(typeof errorCallback === 'function'){
                img.onerror = function () {
                    errorCallback.call(img,dataObj);
                };
            }
        }

 

 

 

function loadScript(url, callback){
  var script = document.createElement ("script")
  script.type = "text/javascript";
  if (script.readyState){ //IE
    script.onreadystatechange = function(){
      if (script.readyState == "loaded" || script.readyState == "complete"){
        script.onreadystatechange = null;
        callback();
      }
    };
  } else { //Others
    script.onload = function(){
      callback();
    };
  }
    script.src = url;
    document.getElementsByTagName_r("head")[0].appendChild(script);//即插即执行
}

 

 

你可以在页面中动态加载很多JavaScript 文件,但要注意,浏览器不保证文件加载的顺序(修正:加载应该是异步同时加载,执行顺序是不确定的,很可能谁先加载完,先执行谁。)。所有主流浏
览器之中,只有Firefox 和Opera 保证脚本按照你指定的顺序执行。其他浏览器将按照服务器返回它们的次
序下载并运行不同的代码文件。你可以将下载操作串联在一起以保证他们的次序,如下:

loadScript("file1.js", function(){
    loadScript("file2.js", function(){
        loadScript("file3.js", function(){
            alert("All files are loaded!");
        });
    });
});        

 

javascript 动态加载按顺序加载运行 js

posted @ 2015-12-15 18:11  darr  阅读(171)  评论(0编辑  收藏  举报