获取哈希值发生变化后的最后一个哈希值

问题描述 投票:0回答:3

我有一个主干应用程序,我想在其中打开一个覆盖层,该覆盖层只是一个具有自己的 URL 的页面。您还可以在此覆盖层中使用不同的页面/URL 进行导航。因此,当覆盖层关闭时,我想将哈希设置回覆盖层打开之前的状态。由于覆盖层是通过链接打开的,因此我无法从之前的状态获取哈希值。

那么当哈希值改变时有没有办法获取之前的哈希值?

javascript backbone.js browser-history
3个回答
3
投票

hashchange 事件有一个“oldURL”字段...存储所有“oldURL”(或仅最后一个),并且在需要时用最后一个 url 更改实际 url。

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


1
投票

我想出了这个小窍门。当覆盖层打开时,我存储

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);
  }
}

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


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])
© www.soinside.com 2019 - 2024. All rights reserved.