119 lines
3.1 KiB
JavaScript
119 lines
3.1 KiB
JavaScript
/*
|
|
Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved.
|
|
Available via Academic Free License >= 2.1 OR the modified BSD license.
|
|
see: http://dojotoolkit.org/license for details
|
|
*/
|
|
|
|
|
|
if(!dojo._hasResource["dojo.io.script"]){
|
|
dojo._hasResource["dojo.io.script"]=true;
|
|
dojo.provide("dojo.io.script");
|
|
(function(){
|
|
var _1=dojo.isIE?"onreadystatechange":"load",_2=/complete|loaded/;
|
|
dojo.io.script={get:function(_3){
|
|
var _4=this._makeScriptDeferred(_3);
|
|
var _5=_4.ioArgs;
|
|
dojo._ioAddQueryToUrl(_5);
|
|
dojo._ioNotifyStart(_4);
|
|
if(this._canAttach(_5)){
|
|
var _6=this.attach(_5.id,_5.url,_3.frameDoc);
|
|
if(!_5.jsonp&&!_5.args.checkString){
|
|
var _7=dojo.connect(_6,_1,function(_8){
|
|
if(_8.type=="load"||_2.test(_6.readyState)){
|
|
dojo.disconnect(_7);
|
|
_5.scriptLoaded=_8;
|
|
}
|
|
});
|
|
}
|
|
}
|
|
dojo._ioWatch(_4,this._validCheck,this._ioCheck,this._resHandle);
|
|
return _4;
|
|
},attach:function(id,_9,_a){
|
|
var _b=(_a||dojo.doc);
|
|
var _c=_b.createElement("script");
|
|
_c.type="text/javascript";
|
|
_c.src=_9;
|
|
_c.id=id;
|
|
_c.charset="utf-8";
|
|
return _b.getElementsByTagName("head")[0].appendChild(_c);
|
|
},remove:function(id,_d){
|
|
dojo.destroy(dojo.byId(id,_d));
|
|
if(this["jsonp_"+id]){
|
|
delete this["jsonp_"+id];
|
|
}
|
|
},_makeScriptDeferred:function(_e){
|
|
var _f=dojo._ioSetArgs(_e,this._deferredCancel,this._deferredOk,this._deferredError);
|
|
var _10=_f.ioArgs;
|
|
_10.id=dojo._scopeName+"IoScript"+(this._counter++);
|
|
_10.canDelete=false;
|
|
_10.jsonp=_e.callbackParamName||_e.jsonp;
|
|
if(_10.jsonp){
|
|
_10.query=_10.query||"";
|
|
if(_10.query.length>0){
|
|
_10.query+="&";
|
|
}
|
|
_10.query+=_10.jsonp+"="+(_e.frameDoc?"parent.":"")+dojo._scopeName+".io.script.jsonp_"+_10.id+"._jsonpCallback";
|
|
_10.frameDoc=_e.frameDoc;
|
|
_10.canDelete=true;
|
|
_f._jsonpCallback=this._jsonpCallback;
|
|
this["jsonp_"+_10.id]=_f;
|
|
}
|
|
return _f;
|
|
},_deferredCancel:function(dfd){
|
|
dfd.canceled=true;
|
|
if(dfd.ioArgs.canDelete){
|
|
dojo.io.script._addDeadScript(dfd.ioArgs);
|
|
}
|
|
},_deferredOk:function(dfd){
|
|
var _11=dfd.ioArgs;
|
|
if(_11.canDelete){
|
|
dojo.io.script._addDeadScript(_11);
|
|
}
|
|
return _11.json||_11.scriptLoaded||_11;
|
|
},_deferredError:function(_12,dfd){
|
|
if(dfd.ioArgs.canDelete){
|
|
if(_12.dojoType=="timeout"){
|
|
dojo.io.script.remove(dfd.ioArgs.id,dfd.ioArgs.frameDoc);
|
|
}else{
|
|
dojo.io.script._addDeadScript(dfd.ioArgs);
|
|
}
|
|
}
|
|
return _12;
|
|
},_deadScripts:[],_counter:1,_addDeadScript:function(_13){
|
|
dojo.io.script._deadScripts.push({id:_13.id,frameDoc:_13.frameDoc});
|
|
_13.frameDoc=null;
|
|
},_validCheck:function(dfd){
|
|
var _14=dojo.io.script;
|
|
var _15=_14._deadScripts;
|
|
if(_15&&_15.length>0){
|
|
for(var i=0;i<_15.length;i++){
|
|
_14.remove(_15[i].id,_15[i].frameDoc);
|
|
_15[i].frameDoc=null;
|
|
}
|
|
dojo.io.script._deadScripts=[];
|
|
}
|
|
return true;
|
|
},_ioCheck:function(dfd){
|
|
var _16=dfd.ioArgs;
|
|
if(_16.json||(_16.scriptLoaded&&!_16.args.checkString)){
|
|
return true;
|
|
}
|
|
var _17=_16.args.checkString;
|
|
if(_17&&eval("typeof("+_17+") != 'undefined'")){
|
|
return true;
|
|
}
|
|
return false;
|
|
},_resHandle:function(dfd){
|
|
if(dojo.io.script._ioCheck(dfd)){
|
|
dfd.callback(dfd);
|
|
}else{
|
|
dfd.errback(new Error("inconceivable dojo.io.script._resHandle error"));
|
|
}
|
|
},_canAttach:function(_18){
|
|
return true;
|
|
},_jsonpCallback:function(_19){
|
|
this.ioArgs.json=_19;
|
|
}};
|
|
})();
|
|
}
|