天天看點

EXT動态加載js的代碼

EXT動态加載js的代碼
EXT動态加載js的代碼

Code

Ext.ux.JSLoader = function(options) {

  Ext.ux.JSLoader.scripts[++Ext.ux.JSLoader.index] = {

    url: options.url,

    success: true,

    options: options,

    onLoad: options.onLoad || Ext.emptyFn,

    onError: options.onError || Ext.ux.JSLoader.stdError

  };

  Ext.Ajax.request({

    scriptIndex: Ext.ux.JSLoader.index,

    success: function(response, options) {

      var script = 'Ext.ux.JSLoader.scripts[' + options.scriptIndex + ']';

      window.setTimeout('try { ' + response.responseText + ' } catch(e) { '+script+'.success = false; '+script+'.onError('+script+'.options, e); }; if ('+script+'.success) '+script+'.onLoad('+script+'.options);', 0);

    },

    failure: function(response, options) {

      var script = Ext.ux.JSLoader.scripts[options.scriptIndex];

      script.success = false;

      script.onError(script.options, response.status);

    }

  });

}

Ext.ux.JSLoader.index = 0;

Ext.ux.JSLoader.scripts = [];

Ext.ux.JSLoader.stdError = function(options, e) {

  window.alert('Error loading script:\n\n' + options.url + '\n\n(status: ' + e + ')');

var jsload  = function(urls,fun){

      new Ext.ux.JSLoader({

        url: urls,

        onLoad: function(options) { 

            eval(fun); 

        },

        onError: function(options, e) { alert('Error loading script'); }

      });

調用方法:

<a href="javascript:jsload('js/test.js','test.init()');">test</a>

繼續閱讀