我正在尝试使用
填充当前所选标签的索引history.pushState({tabSelected: 1}, null, "");
我在jquery中有一个popstate事件的处理程序,它以编程方式切换jquery ui标签。
$(window).bind("popstate", function(event) {
var state = event.originalEvent.state;
...
}
这很好用,浏览器和我可以使用后退和前进按钮在标签之间切换。也适用于两层标签。
但在某些情况下,我想将其他状态推送到堆栈。所以我做了以下几点:
var content = { targetId : id,
targetContent : $("#myDivId").html()
};
$.extend(content, {tabSelected: currentTab});
history.pushState(content, null, "");
在推送历史记录之前和之后,内容看起来很好。检查console.log(history.state);还试过检查chrome控制台。
但是在我的popstate处理程序中,我没有在对象event.originalEvent.state上看到targetId,tabSelected属性。我在对象上看到了tabSelected的正确值,但由于某种原因,我看到了一个精简的状态。
同时检查Chrome和Firefox。无法获得正确的内容。什么想法可能是错的? 提前谢谢。
更新
还尝试在每个pushstate上递增一个全局变量并将其添加到状态。 事实证明,对于特定情况,我提到全局变量变为值48而不是49意味着它正在拾取最后一个事件。我没有看到我的popstate处理程序被调用。不知道发生了什么。
另一次更新
当我两次调用history.pushState(content,null,“”)时,它可以正常工作。 (只在一个地方,在另一个地方,我仍然称它为一次)。 看起来由于某种原因,浏览器返回的是最后一个状态。显然我的代码有问题,因为这个解决方法适用于chrome和firefox。