51 lines
1.7 KiB
JavaScript
51 lines
1.7 KiB
JavaScript
|
Ext.namespace('Ext.ux');
|
||
|
var scriptRegister = [];
|
||
|
Ext.ux.OnDemandLoad = function(){
|
||
|
|
||
|
loadComponent = function(component, callback){
|
||
|
|
||
|
if( !scriptRegister[component] ) {
|
||
|
scriptRegister[component] = { loaded: false };
|
||
|
}
|
||
|
var fileType = component.substring(component.lastIndexOf('.'));
|
||
|
var head = document.getElementsByTagName("head")[0];
|
||
|
var done = false;
|
||
|
if (fileType === ".js" ) {
|
||
|
if( !scriptRegister[component].loaded ) {
|
||
|
var fileRef = document.createElement('script');
|
||
|
fileRef.setAttribute("type", "text/javascript");
|
||
|
fileRef.setAttribute("src", component);
|
||
|
fileRef.onload = fileRef.onreadystatechange = function(){
|
||
|
if (!done) {
|
||
|
scriptRegister[component].loaded = true;
|
||
|
|
||
|
done = true;
|
||
|
if(typeof callback == "function"){
|
||
|
callback();
|
||
|
};
|
||
|
head.removeChild(fileRef);
|
||
|
}
|
||
|
};
|
||
|
} else {
|
||
|
if(typeof callback == "function"){
|
||
|
callback();
|
||
|
};
|
||
|
}
|
||
|
} else if (fileType === ".css" && !scriptRegister[component].loaded) {
|
||
|
var fileRef = document.createElement("link");
|
||
|
fileRef.setAttribute("type", "text/css");
|
||
|
fileRef.setAttribute("rel", "stylesheet");
|
||
|
fileRef.setAttribute("href", component);
|
||
|
scriptRegister[component].loaded = true;
|
||
|
}
|
||
|
if (typeof fileRef != "undefined") {
|
||
|
head.appendChild(fileRef);
|
||
|
}
|
||
|
};
|
||
|
|
||
|
return {
|
||
|
load: function(component, callback){
|
||
|
loadComponent(component, callback);
|
||
|
}
|
||
|
};
|
||
|
}();
|