root / trunk / web / dojo / dojox / io / windowName.js @ 9
History | View | Annotate | Download (3.27 KB)
| 1 |
/*
|
|---|---|
| 2 |
Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved.
|
| 3 |
Available via Academic Free License >= 2.1 OR the modified BSD license.
|
| 4 |
see: http://dojotoolkit.org/license for details
|
| 5 |
*/
|
| 6 |
|
| 7 |
|
| 8 |
if(!dojo._hasResource["dojox.io.windowName"]){ |
| 9 |
dojo._hasResource["dojox.io.windowName"]=true; |
| 10 |
dojo.provide("dojox.io.windowName");
|
| 11 |
dojox.io.windowName={send:function(_1,_2){
|
| 12 |
_2.url+=(_2.url.match(/\?/)?"&":"?")+"windowname="+(_2.authElement?"auth":true); |
| 13 |
var _3=_2.authElement;
|
| 14 |
var _4=function(_5){ |
| 15 |
try{
|
| 16 |
var _6=_7.ioArgs.frame.contentWindow.document;
|
| 17 |
_6.write(" ");
|
| 18 |
_6.close(); |
| 19 |
} |
| 20 |
catch(e){
|
| 21 |
} |
| 22 |
(_3||dojo.body()).removeChild(_7.ioArgs.outerFrame); |
| 23 |
return _5;
|
| 24 |
}; |
| 25 |
var _7=dojo._ioSetArgs(_2,_4,_4,_4);
|
| 26 |
if(_2.timeout){
|
| 27 |
setTimeout(function(){
|
| 28 |
if(_7.fired==-1){ |
| 29 |
_7.callback(new Error("Timeout")); |
| 30 |
} |
| 31 |
},_2.timeout); |
| 32 |
} |
| 33 |
var _8=dojox.io.windowName;
|
| 34 |
if(dojo.body()){
|
| 35 |
_8._send(_7,_1,_3,_2.onAuthLoad); |
| 36 |
}else{
|
| 37 |
dojo.addOnLoad(function(){
|
| 38 |
_8._send(_7,_1,_3,_2.onAuthLoad); |
| 39 |
}); |
| 40 |
} |
| 41 |
return _7;
|
| 42 |
},_send:function(_9,_a,_b,_c){ |
| 43 |
var _d=_9.ioArgs;
|
| 44 |
var _e=dojox.io.windowName._frameNum++;
|
| 45 |
var _f=(dojo.config.dojoBlankHtmlUrl||dojo.config.dojoCallbackUrl||dojo.moduleUrl("dojo","resources/blank.html"))+"#"+_e; |
| 46 |
var _10=new dojo._Url(window.location,_f); |
| 47 |
var doc=dojo.doc;
|
| 48 |
var _11=_b||dojo.body();
|
| 49 |
function _12(_13){ |
| 50 |
_13.style.width="100%";
|
| 51 |
_13.style.height="100%";
|
| 52 |
_13.style.border="0px";
|
| 53 |
}; |
| 54 |
if(dojo.isMoz&&![].reduce){
|
| 55 |
var _14=doc.createElement("iframe"); |
| 56 |
_12(_14); |
| 57 |
if(!_b){
|
| 58 |
_14.style.display="none";
|
| 59 |
} |
| 60 |
_11.appendChild(_14); |
| 61 |
var _15=_14.contentWindow;
|
| 62 |
doc=_15.document; |
| 63 |
doc.write("<html><body margin='0px'><iframe style='width:100%;height:100%;border:0px' name='protectedFrame'></iframe></body></html>");
|
| 64 |
doc.close(); |
| 65 |
var _16=_15[0]; |
| 66 |
_15.__defineGetter__(0,function(){ |
| 67 |
}); |
| 68 |
_15.__defineGetter__("protectedFrame",function(){ |
| 69 |
}); |
| 70 |
doc=_16.document; |
| 71 |
doc.write("<html><body margin='0px'></body></html>");
|
| 72 |
doc.close(); |
| 73 |
_11=doc.body; |
| 74 |
} |
| 75 |
var _17=_d.frame=_17=doc.createElement(dojo.isIE?"<iframe name=\""+_10+"\" onload=\"dojox.io.windowName["+_e+"]()\">":"iframe"); |
| 76 |
_12(_17); |
| 77 |
_d.outerFrame=_14=_14||_17; |
| 78 |
if(!_b){
|
| 79 |
_14.style.display="none";
|
| 80 |
} |
| 81 |
var _18=0; |
| 82 |
function _19(){ |
| 83 |
var _1a=_17.contentWindow.name;
|
| 84 |
if(typeof _1a=="string"){ |
| 85 |
if(_1a!=_10){
|
| 86 |
_18=2;
|
| 87 |
_9.ioArgs.hash=_17.contentWindow.location.hash; |
| 88 |
_9.callback(_1a); |
| 89 |
} |
| 90 |
} |
| 91 |
}; |
| 92 |
dojox.io.windowName[_e]=_17.onload=function(){ |
| 93 |
try{
|
| 94 |
if(!dojo.isMoz&&_17.contentWindow.location=="about:blank"){ |
| 95 |
return;
|
| 96 |
} |
| 97 |
} |
| 98 |
catch(e){
|
| 99 |
} |
| 100 |
if(!_18){
|
| 101 |
_18=1;
|
| 102 |
if(_b){
|
| 103 |
if(_c){
|
| 104 |
_c(); |
| 105 |
} |
| 106 |
}else{
|
| 107 |
_17.contentWindow.location=_f; |
| 108 |
} |
| 109 |
} |
| 110 |
try{
|
| 111 |
if(_18<2){ |
| 112 |
_19(); |
| 113 |
} |
| 114 |
} |
| 115 |
catch(e){
|
| 116 |
} |
| 117 |
}; |
| 118 |
_17.name=_10; |
| 119 |
if(_a.match(/GET/i)){ |
| 120 |
dojo._ioAddQueryToUrl(_d); |
| 121 |
_17.src=_d.url; |
| 122 |
_11.appendChild(_17); |
| 123 |
if(_17.contentWindow){
|
| 124 |
_17.contentWindow.location.replace(_d.url); |
| 125 |
} |
| 126 |
}else{
|
| 127 |
if(_a.match(/POST/i)){ |
| 128 |
_11.appendChild(_17); |
| 129 |
var _1b=dojo.doc.createElement("form"); |
| 130 |
dojo.body().appendChild(_1b); |
| 131 |
var _1c=dojo.queryToObject(_d.query);
|
| 132 |
for(var i in _1c){ |
| 133 |
var _1d=_1c[i];
|
| 134 |
_1d=_1d instanceof Array?_1d:[_1d];
|
| 135 |
for(var j=0;j<_1d.length;j++){ |
| 136 |
var _1e=doc.createElement("input"); |
| 137 |
_1e.type="hidden";
|
| 138 |
_1e.name=i; |
| 139 |
_1e.value=_1d[j]; |
| 140 |
_1b.appendChild(_1e); |
| 141 |
} |
| 142 |
} |
| 143 |
_1b.method="POST";
|
| 144 |
_1b.action=_d.url; |
| 145 |
_1b.target=_10; |
| 146 |
_1b.submit(); |
| 147 |
_1b.parentNode.removeChild(_1b); |
| 148 |
}else{
|
| 149 |
throw new Error("Method "+_a+" not supported with the windowName transport"); |
| 150 |
} |
| 151 |
} |
| 152 |
if(_17.contentWindow){
|
| 153 |
_17.contentWindow.name=_10; |
| 154 |
} |
| 155 |
},_frameNum:0}; |
| 156 |
} |