我有一个骨干应用,我想打开一个叠加,这只是一个页面上的URL。您也可以使用不同的网页/网址浏览此叠加层。所以当覆盖层关闭时,我想将散列设置回覆盖层打开之前的状态。由于通过链接打开覆盖,我无法从之前的状态获取散列。在散列发生变化后获取最后一个散列
那么有一种方法可以在散列发生变化时获得前一个散列吗?
我有一个骨干应用,我想打开一个叠加,这只是一个页面上的URL。您也可以使用不同的网页/网址浏览此叠加层。所以当覆盖层关闭时,我想将散列设置回覆盖层打开之前的状态。由于通过链接打开覆盖,我无法从之前的状态获取散列。在散列发生变化后获取最后一个散列
那么有一种方法可以在散列发生变化时获得前一个散列吗?
该hashchange事件有一个“oldURL”字段....存储所有的“oldURL”(或只有最后一个),并且,当你需要它时,用最后一个URL改变实际的URL。
我想出了这个小劈。当覆盖层打开时,我存储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);
}
}
不幸的是,这并不工作历史极限的原因。所以,当你达到历史长度的极限时,你会得到一个错误的结果。
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])
通过'window.location.replace(oldUrl)'保存'oldUrl'并返回到原来的位置是要走的路。谢谢。 – 2012-07-19 07:31:39