Javascript历史状态不正确

我正在尝试使用填充当前所选选项卡的索引

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上递增一个全局变量并将其添加到状态。 事实certificate,对于特定情况,我提到全局变量变为值48而不是49意味着它正在拾取最后但只有一个事件。 我没有看到我的popstate处理程序被调用。 不知道发生了什么。

另一个更新

当我调用history.pushState(content,null,“”)两次时它可以正常工作。 (只在一个地方,在另一个地方,我仍然称它为一次)。 看起来由于某种原因,浏览器返回的是最后一个状态。 显然我的代码有问题,因为这个解决方法适用于chrome和firefox。