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

时间:2015-08-24 03:58:00

标签: javascript ajax pushstate html5-history popstate

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

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

由于我存储了一个默认状态和页面标题,在该状态和页面标题中引用popstate事件为空时,它正在重写页面上。

例如,让我们说我的历史堆栈如下:

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

如果我重新加载,则在第2页上,默认状态变为第2页。因此,如果我要导航回来,它最终将会执行:

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

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

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

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

1 个答案:

答案 0 :(得分:1)

如果其他人偶然发现,我最终用replaceState解决了这个问题。

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