Ext.ux.JSLoader = function(options) { Ext.ux.JSLoader.scripts[++Ext.ux.JSLoader.index] = { url: options.url, success: true, jsLoadObj: null, options: options, onLoad: options.onLoad || Ext.emptyFn, onError: options.onError || Ext.ux.JSLoader.stdError, scope: options.scope || this, }; Ext.Ajax.request({ url: options.url, scriptIndex: Ext.ux.JSLoader.index, success: function(response, options) { var script = Ext.ux.JSLoader.scripts[options.scriptIndex]; try { eval(response.responseText); } catch (e) { script.success = false; script.onError(script.options, e); } if (script.success) { script.onLoad.call(script.scope, script.options); } }, 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\nstatus: ' + e ); };