在哈希更改后获取最后一个哈希

时间:2012-07-18 13:26:19

标签: javascript backbone.js browser-history

我有一个骨干应用程序,我想打开一个覆盖页面,它只是一个带有网址的页面。您还可以使用不同的页面/网址在此叠加层中导航。所以当叠加层关闭时,我想将哈希值设置回打开叠加层之前的状态。由于链接是通过链接打开的,我无法从之前的状态获取哈希值。

当哈希值发生变化时,有没有办法获取前一个哈希?

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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);
  }
}

不幸的是,由于历史的限制,这不起作用。因此,在达到历史记录长度限制后,您会得到错误的结果。

答案 2 :(得分:0)

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])