summaryrefslogtreecommitdiff
path: root/includes/js/dojo/tests/io/scriptJsonp.js
diff options
context:
space:
mode:
Diffstat (limited to 'includes/js/dojo/tests/io/scriptJsonp.js')
-rw-r--r--includes/js/dojo/tests/io/scriptJsonp.js57
1 files changed, 57 insertions, 0 deletions
diff --git a/includes/js/dojo/tests/io/scriptJsonp.js b/includes/js/dojo/tests/io/scriptJsonp.js
new file mode 100644
index 0000000..ad1a196
--- /dev/null
+++ b/includes/js/dojo/tests/io/scriptJsonp.js
@@ -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);