138 lines
2.8 KiB
JavaScript
138 lines
2.8 KiB
JavaScript
|
/*
|
||
|
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
|
||
|
*/
|
||
|
|
||
|
//>>built
|
||
|
define("dojo/hash",["./_base/kernel","require","./_base/connect","./_base/lang","./ready","./_base/sniff"],function(_1,_2,_3,_4,_5,_6){
|
||
|
_1.hash=function(_7,_8){
|
||
|
if(!arguments.length){
|
||
|
return _9();
|
||
|
}
|
||
|
if(_7.charAt(0)=="#"){
|
||
|
_7=_7.substring(1);
|
||
|
}
|
||
|
if(_8){
|
||
|
_a(_7);
|
||
|
}else{
|
||
|
location.href="#"+_7;
|
||
|
}
|
||
|
return _7;
|
||
|
};
|
||
|
var _b,_c,_d,_e=_1.config.hashPollFrequency||100;
|
||
|
function _f(str,_10){
|
||
|
var i=str.indexOf(_10);
|
||
|
return (i>=0)?str.substring(i+1):"";
|
||
|
};
|
||
|
function _9(){
|
||
|
return _f(location.href,"#");
|
||
|
};
|
||
|
function _11(){
|
||
|
_3.publish("/dojo/hashchange",[_9()]);
|
||
|
};
|
||
|
function _12(){
|
||
|
if(_9()===_b){
|
||
|
return;
|
||
|
}
|
||
|
_b=_9();
|
||
|
_11();
|
||
|
};
|
||
|
function _a(_13){
|
||
|
if(_c){
|
||
|
if(_c.isTransitioning()){
|
||
|
setTimeout(_4.hitch(null,_a,_13),_e);
|
||
|
return;
|
||
|
}
|
||
|
var _14=_c.iframe.location.href;
|
||
|
var _15=_14.indexOf("?");
|
||
|
_c.iframe.location.replace(_14.substring(0,_15)+"?"+_13);
|
||
|
return;
|
||
|
}
|
||
|
location.replace("#"+_13);
|
||
|
!_d&&_12();
|
||
|
};
|
||
|
function _16(){
|
||
|
var ifr=document.createElement("iframe"),_17="dojo-hash-iframe",_18=_1.config.dojoBlankHtmlUrl||_2.toUrl("./resources/blank.html");
|
||
|
if(_1.config.useXDomain&&!_1.config.dojoBlankHtmlUrl){
|
||
|
console.warn("dojo.hash: When using cross-domain Dojo builds,"+" please save dojo/resources/blank.html to your domain and set djConfig.dojoBlankHtmlUrl"+" to the path on your domain to blank.html");
|
||
|
}
|
||
|
ifr.id=_17;
|
||
|
ifr.src=_18+"?"+_9();
|
||
|
ifr.style.display="none";
|
||
|
document.body.appendChild(ifr);
|
||
|
this.iframe=_1.global[_17];
|
||
|
var _19,_1a,_1b,_1c,_1d,_1e=this.iframe.location;
|
||
|
function _1f(){
|
||
|
_b=_9();
|
||
|
_19=_1d?_b:_f(_1e.href,"?");
|
||
|
_1a=false;
|
||
|
_1b=null;
|
||
|
};
|
||
|
this.isTransitioning=function(){
|
||
|
return _1a;
|
||
|
};
|
||
|
this.pollLocation=function(){
|
||
|
if(!_1d){
|
||
|
try{
|
||
|
var _20=_f(_1e.href,"?");
|
||
|
if(document.title!=_1c){
|
||
|
_1c=this.iframe.document.title=document.title;
|
||
|
}
|
||
|
}
|
||
|
catch(e){
|
||
|
_1d=true;
|
||
|
console.error("dojo.hash: Error adding history entry. Server unreachable.");
|
||
|
}
|
||
|
}
|
||
|
var _21=_9();
|
||
|
if(_1a&&_b===_21){
|
||
|
if(_1d||_20===_1b){
|
||
|
_1f();
|
||
|
_11();
|
||
|
}else{
|
||
|
setTimeout(_4.hitch(this,this.pollLocation),0);
|
||
|
return;
|
||
|
}
|
||
|
}else{
|
||
|
if(_b===_21&&(_1d||_19===_20)){
|
||
|
}else{
|
||
|
if(_b!==_21){
|
||
|
_b=_21;
|
||
|
_1a=true;
|
||
|
_1b=_21;
|
||
|
ifr.src=_18+"?"+_1b;
|
||
|
_1d=false;
|
||
|
setTimeout(_4.hitch(this,this.pollLocation),0);
|
||
|
return;
|
||
|
}else{
|
||
|
if(!_1d){
|
||
|
location.href="#"+_1e.search.substring(1);
|
||
|
_1f();
|
||
|
_11();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
setTimeout(_4.hitch(this,this.pollLocation),_e);
|
||
|
};
|
||
|
_1f();
|
||
|
setTimeout(_4.hitch(this,this.pollLocation),_e);
|
||
|
};
|
||
|
_5(function(){
|
||
|
if("onhashchange" in _1.global&&(!_6("ie")||(_6("ie")>=8&&document.compatMode!="BackCompat"))){
|
||
|
_d=_3.connect(_1.global,"onhashchange",_11);
|
||
|
}else{
|
||
|
if(document.addEventListener){
|
||
|
_b=_9();
|
||
|
setInterval(_12,_e);
|
||
|
}else{
|
||
|
if(document.attachEvent){
|
||
|
_c=new _16();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
return _1.hash;
|
||
|
});
|