javascript - 页面刷新后保留pushState历史记录

标签 javascript ajax pushstate html5-history popstate

我一直在开发一个使用 AJAX 和浏览器历史记录 API 进行导航的网站。

我已经能够使后退/前进按钮的导航正常工作,但单击刷新按钮后出现问题。

由于我存储了默认状态和页面标题,当 popstate 事件为 null 时要在其中引用,因此它会在页面重新加载时被覆盖。

例如,假设我的历史堆栈如下所示:

[索引,第 1 页,第 2 页]

在第 2 页上,如果我重新加载,默认状态将变为第 2 页。因此,如果我要向后导航,它最终会执行以下操作:

第 2 页 -> 第 1 页 -> 第 2 页

因为我的弹出支架处理程序设置为在状态为 null 时转到默认页面。

我确信其他人也遇到过这个问题,但我还没有找到任何明确的解决方案。大多数教程都保留了后退/前进的框架,并且从未提及刷新引起的问题。

我不确定对此有什么好的解决方案。有什么想法吗?

最佳答案

以防万一其他人偶然发现这个问题,我最终用replaceState解决了这个问题。

基本上只是将状态替换为初始页面加载的状态。然后一切都应该正常工作,而不必处理 popState 事件为空的情况。

关于javascript - 页面刷新后保留pushState历史记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32174247/

相关文章:

jquery - window.history.pushState 不会回到历史

javascript - 在 node.js 上对具有低 RAM 的大文件进行排序

javascript - 我们可以在运行时更改 Protractor 配置文件中定义的参数值吗

ajax - Nginx PHP API CORS

javascript - 使用 angular js 客户端对 Python 服务器进行 rest 调用的示例

javascript - 使用 pushstate 添加查询字符串

javascript - 在 Three.JS 中向 Material 贴图添加纹理时出现 WebGL 警告

javascript - 将 JavaScript 类导入另一个类时出现意外标识符 {classname}

javascript - 如何在 Ajax 中获取 Response 数据字符集?

javascript - history.pushState() 改变查询值