/* Copyright (c) 2004-2011, 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"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code. dojo._hasResource["dojo.io.script"] = true; dojo.provide("dojo.io.script"); dojo.getObject("io", true, dojo); /*===== dojo.declare("dojo.io.script.__ioArgs", dojo.__IoArgs, { constructor: function(){ // summary: // All the properties described in the dojo.__ioArgs type, apply to this // type as well, EXCEPT "handleAs". It is not applicable to // dojo.io.script.get() calls, since it is implied by the usage of // "jsonp" (response will be a JSONP call returning JSON) // or the response is pure JavaScript defined in // the body of the script that was attached. // callbackParamName: String // Deprecated as of Dojo 1.4 in favor of "jsonp", but still supported for // legacy code. See notes for jsonp property. // jsonp: String // The URL parameter name that indicates the JSONP callback string. // For instance, when using Yahoo JSONP calls it is normally, // jsonp: "callback". For AOL JSONP calls it is normally // jsonp: "c". // checkString: String // A string of JavaScript that when evaluated like so: // "typeof(" + checkString + ") != 'undefined'" // being true means that the script fetched has been loaded. // Do not use this if doing a JSONP type of call (use callbackParamName instead). // frameDoc: Document // The Document object for a child iframe. If this is passed in, the script // will be attached to that document. This can be helpful in some comet long-polling // scenarios with Firefox and Opera. this.callbackParamName = callbackParamName; this.jsonp = jsonp; this.checkString = checkString; this.frameDoc = frameDoc; } }); =====*/ (function(){ var loadEvent = dojo.isIE ? "onreadystatechange" : "load", readyRegExp = /complete|loaded/; dojo.io.script = { get: function(/*dojo.io.script.__ioArgs*/args){ // summary: // sends a get request using a dynamically created script tag. var dfd = this._makeScriptDeferred(args); var ioArgs = dfd.ioArgs; dojo._ioAddQueryToUrl(ioArgs); dojo._ioNotifyStart(dfd); if(this._canAttach(ioArgs)){ var node = this.attach(ioArgs.id, ioArgs.url, args.frameDoc); //If not a jsonp callback or a polling checkString case, bind //to load event on the script tag. if(!ioArgs.jsonp && !ioArgs.args.checkString){ var handle = dojo.connect(node, loadEvent, function(evt){ if(evt.type == "load" || readyRegExp.test(node.readyState)){ dojo.disconnect(handle); ioArgs.scriptLoaded = evt; } }); } } dojo._ioWatch(dfd, this._validCheck, this._ioCheck, this._resHandle); return dfd; }, attach: function(/*String*/id, /*String*/url, /*Document?*/frameDocument){ // summary: // creates a new