在测试场景中,我有两个页面 pageA 和 pageB。
在第一步中,一个按钮触发window.history.pushState
调用,并在地址栏中显示pageB 的地址。
第二步浏览器地址栏用于请求pageB。浏览器呈现 pageB 的内容。在地址栏中显示了 pageB 的地址。
在最后一步中,浏览器的后退按钮用于返回 pageA。在地址栏中显示了 pageA 的地址。然而,浏览器显示了 pageB 的内容,而我希望看到 pageA 的内容。
我知道我做错了什么。甚至我都不知道如何描述这种行为。你有什么建议吗?
在这里您可以找到 jsFiddle 中的演示:http://jsfiddle.net/HqECT/3/show/
您可能会看到实现:http://jsfiddle.net/HqECT/3/
注意:测试在 Chrome v30.0.1599.101 中运行
最佳答案
您需要监听 popstate event .事件对象将有一个 state
属性,其中包含调用 pushState
时放入历史记录的任何数据。如果您将正确的数据放入其中,您可以使用它来将页面恢复到旧 URL 的状态。
关于javascript - pushState 扰乱浏览器历史,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19451138/