history.replaceState()不会在Firefox中触发popstate事件?

时间:2018-06-14 22:27:05

标签: javascript firefox browser-history html5-history

我有一个访问REST API的SPA /网络应用程序。对服务器的第一个请求返回一个shell,所有后续请求都是AJAX调用,它返回JSON数据,然后在客户端上呈现。

对于所有直接路由(即书签/链接/直接导航),使用history.replaceState()(在onload处理程序中调用)。当使用后退/前进导航时,它会在Safari / popstate事件中按预期工作。但是在Firefox(60.0.2)中,没有发生popstate事件。在向后/向前导航时,会创建状态对象并保持正确的状态,但popstate事件永远不会发生。当使用history.pushState()时,正确调用popstate事件。

Firefox也在缓存页面状态(即,即使页面呈现在客户端,向后/向前导航仍会触发页面刷新,而AJAX和渲染函数(应该由popstate触发)永远不会所谓的)。我尝试使用Cache-Control标头无效。我不确定Firefox缓存是否会与popstate产生某种冲突,但是值得一提。

这到底发生了什么? Firefox中的history.replaceState()是否存在已知问题/错误?我搜索并找不到history.replaceState()/我发现的有关history.pushState()的所有内容。或者我误解了什么?

由于

0 个答案:

没有答案