页面刷新后保留 pushState 历史

Preserving pushState history after page refresh

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

我已经能够让 back/forward 按钮的导航正常工作,但在单击刷新按钮后出现问题。

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

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

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

在第 2 页,如果我重新加载,默认状态变为第 2 页。因此,如果我要返回,它最终会做:

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

因为我的 pop stand 处理程序设置为在状态为 null 时转到默认页面。

我敢肯定其他人 运行 已经解决了这个问题,但我还没有找到任何明确的解决方案。大部分教程都把框架留给back/forward,从来不提刷新带来的问题

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

为了防止其他人遇到这个问题,我最终使用 replaceState 解决了这个问题。

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