我是靠谱客的博主 高兴裙子,最近开发中收集的这篇文章主要介绍JavaScript - JSLoader.js,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 

/**
 * js动态加载器
 * @class ScriptLoader.prototype
 * @extends Ext.Window
 * @author nb
 * @version 20110812
 */


ScriptLoader = function() {
 this.timeout = 30;
 this.scripts = [];
 this.disableCaching = false;
 this.loadMask = null;
};
ScriptLoader.prototype = {
 showMask : function() {
  if (!this.loadMask) {
   this.loadMask = new Ext.LoadMask(Ext.getBody());
   this.loadMask.show();
  }
 },
 hideMask : function() {
  if (this.loadMask) {
   this.loadMask.hide();
   this.loadMask = null;
  }
 },
 processSuccess : function(response) {
  this.scripts[response.argument.url] = true;
  window.execScript ? window.execScript(response.responseText) : window
    .eval(response.responseText);
  if (response.argument.options.scripts.length == 0) {
   this.hideMask();
  }
  if (typeof response.argument.callback == 'function') {
   response.argument.callback.call(response.argument.scope);
  }
 },
 processFailure : function(response) {
  this.hideMask();
  Ext.MessageBox.show( {
   title : '提示',
   msg : '抱歉,加载失败! 错误代码:#1527',
   closable : false,
   icon : Ext.MessageBox.ERROR,
   minWidth : 200
  });
  setTimeout(function() {
   Ext.MessageBox.hide();
  }, 3000);
 },
 load : function(url, callback) {
  var cfg, callerScope;
  if (typeof url == 'object') { // must be config object   
  cfg = url;
  url = cfg.url;
  callback = callback || cfg.callback;
  callerScope = cfg.scope;
  if (typeof cfg.timeout != 'undefined') {
   this.timeout = cfg.timeout;
  }
  if (typeof cfg.disableCaching != 'undefined') {
   this.disableCaching = cfg.disableCaching;
  }
 }
 if (this.scripts[url]) {
  if (typeof callback == 'function') {
   callback.call(callerScope || window);
  }
  return null;
 }
 this.showMask();
 Ext.Ajax.request( {
  url : url,
  success : this.processSuccess,
  failure : this.processFailure,
  scope : this,
  timeout : (this.timeout * 1000),
  disableCaching : this.disableCaching,
  argument : {
   'url' : url,
   'scope' : callerScope || window,
   'callback' : callback,
   'options' : cfg
  }
 });
}
};


ScriptLoaderMgr = function() {
 this.loader = new ScriptLoader();
 this.load = function(o) {
  if (!Ext.isArray(o.scripts)) {
   o.scripts = [ o.scripts ];
  }
  o.url = o.scripts.shift();
  if (o.scripts.length == 0) {
   this.loader.load(o);
  } else {
   o.scope = this;
   this.loader.load(o, function() {
    this.load(o);
   });
  }
 };
};


JSLoader = new ScriptLoaderMgr();


//使用方式
//JSLoader.load({   
//    scripts: ["1.js", "2.js", "3.js"], //地址数据,用到几个传几个地址  
//    callback: function() {
//  //加载成功后的一系列操作,此函数可以去除
//    }
//});

最后

以上就是高兴裙子为你收集整理的JavaScript - JSLoader.js的全部内容,希望文章能够帮你解决JavaScript - JSLoader.js所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部