`
yxgyh
  • 浏览: 269180 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Ext 动态加载js

    博客分类:
  • Ext
阅读更多
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: 'Application Error', msg: 'Script library could not be loaded.', 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);
        });
      }
    };
  };

  ScriptMgr = new ScriptLoaderMgr();  

 

ScriptMgr.load({
  scripts: ['/js/other-prerequisite.js', '/js/other.js'],
  callback: function() {
    var other = new OtherObject();
    alert(other); //just loaded
  }
});  

 

 http://www.extjs.com/forum/showthread.php?37897-dynamically-load-javascript

国外人写的一个动态加载JS的工具,开发的时候还是可以用的着的。

分享到:
评论

相关推荐

    Ext4 动态加载js例子

    Ext4 动态加载js例子 Ext4 动态加载js例子 Ext4 动态加载js例子 Ext4 动态加载js例子

    EXTJS4 MVC+ASP.NET MVC3动态加载JS文件实例

    本例采用ASP.NET MVC3 +EXTJS4 MVC 框架,完美实现了EXTJS4动态加载JS文件,对ASP.NET MVC3及EXTJS4 MVC 各应用要点进行了应用。对于想采用ASP.NET MVC3 +EXTJS4 MVC 框架的学习者有很好的帮助,快速掌握MVC框架,本...

    ext4.0动态加载示例

    ext4.0动态加载,使用json数据源,整个项目只有一个页面,js按照mvc模式搭建

    Ext JS动态加载JavaScript创建窗体的方法

    下面结合Ext JS来说明如何从服务器上动态加载JS脚本来动态创建窗体。  1 项目结构:  项目结构如下:其中GetJSUI一般处理程序用来从数据库表中抓取UI配置,并返回到客户端;Contents文件夹下用HTML文件和JS库等。...

    EXT JS动态加载机制的研究与实现.pdf

    EXT JS动态加载机制的研究与实现

    ext 强大的js类库

    ext是一个强大的js类库,以前是基于YAHOO-UI,现在已经完全独立了,  主要包括data,widget,form,grid,dd,menu,其中最强大的应该算grid了,编程思想是基于面向对象编程(oop),扩展性相当的好.可以自己写扩展.自己定义...

    EXT 通用动态Grid封装js

    对ext Grid进行了封装,动态加载数据源,动态生成列

    Ext.js教程完整版

    3. 采用”适配器(adapters)“使得 Ext 和其他的 JavaScript 库共存; 4. 充分利用 AJAX 技术; 5. 在您的语言中展示 ExtJS 对象; 关于 Ext: 我们采用最新的的 Ext 2.x 版本, 1.x 版本到 2.x 版本的是一个重组的...

    JS.rar_ExtEnsure.js_ext js java

    动态加载JS,Ext动态加载,加载过程,希望给大家带来一些帮助,谢谢,第一次上传

    js写的加载效果,模仿Ext的效果

    自己模仿Ext写的加载效果,感觉还可以,放上来和大家分享,可在实际项目中使用,收大家一分,意思一下。

    Ext+JS高级程序设计.rar

    6.3.4 在form中使用Ext.Direct加载数据 185 6.3.5 在form中使用Ext.Direct提交数据 187 6.3.6 使用polling方式进行轮询 189 6.4 本章小结 191 第7章 Store 192 7.1 Store的结构 192 7.2 Ext.data.Field 197 7.3 Ext....

    springMVC整合ext4js

    springMVC整合ext4js 包括主界面代码实现; 包括主界面导航代码实现; 包括添加表单的代码实现; 希望整个权限系统完成后全部发上来;

    ext js 2.2

    ext是一个强大的js类库,以前是基于YAHOO-UI,现在已经完全独立了, 主要包括data,widget,form,gird,dd,menu,其中最强大的应该算gird了,编程思想是基于面对对象编程(oop),扩展性相当的好.可以自己写扩展.自己定义命名...

    package-loader:Ext JS 动态包加载器

    包加载器Ext JS 动态包加载器要求这个包被 Ext JS 应用程序和 Sencha Cmd 6.5 使用安装 下载 。 我们建议将 Ext JS 解压到您的主目录中的"sencha-sdks"文件夹中。在 Cmd 应用程序中使用只需将package-loader添加到'...

    Ext js 教程大全

    自动生成行号,支持checkbox全选,动态选择显示哪些列,支持本地以及远程分页,可以对单元格按照自己的想法进行渲染,这些也算可以想到的功能。 再加上可编辑grid,添加新行,删除一或多行,提示脏数据,推拽改变...

    EXT TREE 扩展CHECKBOX JS

    EXT TREE 扩展CHECKBOX所需JS loader方法中添加: baseAttrs: {uiProvider: Ext.tree.TreeCheckNodeUI }

    Ext Js权威指南(.zip.001

    4.4.4 实现动态加载:ext.loader / 151 4.4.5 管理类的类:ext.classmanager / 159 4.4.6 类创建的总结 / 161 4.5 动态加载的路径设置 / 163 4.6 综合实例:页面计算器 / 165 4.7 本章小结 / 169 第5章 ext ...

    Extjs3动态加载js源码

    自己由于使用extjs3,开发了一个动态加载js的管理器,类似extjs4的使用方式,但实现方式完全不一样,有兴趣的朋友可以下载后使用,欢迎吐槽

    Ext JS 删除的代码

    text : "添加月租金", iconCls : "add10", listeners : { click : function() { add_rent.show(); } } }, { text : "删除", iconCls : "add10", ...

Global site tag (gtag.js) - Google Analytics