2012-07-18 42 views
0

我有一个骨干应用,我想打开一个叠加,这只是一个页面上的URL。您也可以使用不同的网页/网址浏览此叠加层。所以当覆盖层关闭时,我想将散列设置回覆盖层打开之前的状态。由于通过链接打开覆盖,我无法从之前的状态获取散列。在散列发生变化后获取最后一个散列

那么有一种方法可以在散列发生变化时获得前一个散列吗?

回答

1

该hashchange事件有一个“oldURL”字段....存储所有的“oldURL”(或只有最后一个),并且,当你需要它时,用最后一个URL改变实际的URL。

来源:https://developer.mozilla.org/en/DOM/window.onhashchange

+0

通过'window.location.replace(oldUrl)'保存'oldUrl'并返回到原来的位置是要走的路。谢谢。 – 2012-07-19 07:31:39

0

我想出了这个小劈。当覆盖层打开时,我存储window.history.length。当叠加关闭我打电话window.history.go与存储的长度与实际之间的差异,减去1

var appStateActions = { 
    overlayPre: function(){ 
    this.historyPosition = window.history.length; 
    }, 
    overlayExit: function(){ 
    window.history.go(this.historyPosition - window.history.length -1); 
    } 
} 

不幸的是,这并不工作历史极限的原因。所以,当你达到历史长度的极限时,你会得到一个错误的结果。

-1
var historyurl =[]; 

$(window).on('hashchange', function(e){ 
    historyurl.push(location.hash); 
    if(historyurl.length > 2){ 
     historyurl.splice(0,historyurl.length-2) 
    }; 
}); 

console.log("Last Hah Url ="+historyurl[0])