]> git.pond.sub.org Git - eow/blobdiff - static/dojo-release-1.1.1/dojo/tests/io/scriptJsonp.js
add Dojo 1.1.1
[eow] / static / dojo-release-1.1.1 / dojo / tests / io / scriptJsonp.js
diff --git a/static/dojo-release-1.1.1/dojo/tests/io/scriptJsonp.js b/static/dojo-release-1.1.1/dojo/tests/io/scriptJsonp.js
new file mode 100644 (file)
index 0000000..ad1a196
--- /dev/null
@@ -0,0 +1,57 @@
+function getJsonpCallback(url){
+       var result = null;
+       var idMatch = url.match(/jsonp=(.*?)(&|$)/);
+       if(idMatch){
+               result = idMatch[1];
+       }else{
+               //jsonp didn't match, so maybe it is the jsonCallback thing.
+               idMatch = url.match(/callback=(.*?)(&|$)/);
+               if(idMatch){
+                       result = idMatch[1];
+               }
+       }
+       
+       if(result){
+               result = decodeURIComponent(result);
+       }
+       return result;
+}
+
+function findJsonpDone(){
+       var result = false;
+       var scriptUrls = getScriptUrls();
+       
+       for(var i = 0; i < scriptUrls.length; i++){
+               var jsonp = getJsonpCallback(scriptUrls[i]);
+               if(jsonp){
+                       eval(jsonp + "({animalType: 'mammal'});");
+                       result = true;
+                       break;
+               }
+       }
+       return result;
+}
+
+function getScriptUrls(){
+       //Get the script tags in the page to figure what state we are in.
+       var scripts = document.getElementsByTagName('script');
+       var scriptUrls = new Array();
+       for(var i = 0; scripts && i < scripts.length; i++){
+               var scriptTag = scripts[i];
+               if(scriptTag.id.indexOf("dojoIoScript") == 0){
+                       scriptUrls.push(scriptTag.src);
+               }
+       }
+
+       return scriptUrls;
+}
+
+function doJsonpCallback(){
+       if(!findJsonpDone()){
+                alert('ERROR: Could not jsonp callback!');
+       }
+}
+
+//Set a timeout to do the callback check, since MSIE won't see the SCRIPT tag until
+//we complete processing of this page.
+setTimeout(function(){doJsonpCallback();}, 300);