我一直在使用AJAX和浏览器历史记录API进行导航的网站上工作。
我已经能够使导航在后退/前进按钮中正常工作,但单击刷新按钮后出现问题。
由于我存储了一个默认状态和页面标题,在该状态和页面标题中引用popstate事件为空时,它正在重写页面上。
例如,让我们说我的历史堆栈如下:
[索引,第1页,第2页]
如果我重新加载,则在第2页上,默认状态变为第2页。因此,如果我要导航回来,它最终将会执行:
第2页 - >第1页 - >第2页
由于我的pop stand处理程序设置为在状态为null时转到默认页面。
我确信其他人已经遇到过这个问题,但我还没有找到任何明确的解决方案。大多数教程都留下了后退/前进的框架,从不提及刷新引起的问题。
我不确定这对于什么是好的解决方案。有什么想法吗?
答案 0 :(得分:1)
如果其他人偶然发现,我最终用replaceState解决了这个问题。
基本上只需将状态替换为初始页面加载的状态。然后一切都应该正常工作,而不必处理popState事件为null。