我想知道什么会导致 window.addEventListner('popstate', foo, false) window.attachEvent('onpopstate', foo) 和 window.onpopstate=foo 不触发函数 foo.我们有与此类似的代码,在生产中它不会触发,但在开发中它会触发。是否可以通过 JS 禁用 popstate 事件或导致某种碰撞或竞争条件发生?
编辑(Gustin):+示例代码
PopStateEvent.js(完整列表,使用 jQuery 1.9.1):
$(window).bind('popstate', function () { alert("Pop state event received!"); });
如果我使用 IE 10 (10.0.9200.16484) 测试这个非常简单的示例,我永远不会收到弹出状态事件(即警报框永远不会出现)。即使我离开并通过 IE 的后退按钮返回也不会。 IE。 this Q/A没有解决我的问题。
使用Chrome 24,一切正常。
请您参考如下方法:
您确定没有使用history.pushState()或history.replaceState()来调用它吗?
只有当您使用浏览器执行某些操作(例如后退按钮)或使用history.back()调用时,才会触发popstate。
除此之外,它还可以与 chrome 一起使用,因为它会在加载页面时发出 popstate,因此请检查以确保事件确实正在加载。检查这一点应包含在:
if (document.readyState == "complete") {
initApplication();
}
我相信 document.readyState 中包含 popstate,因此请尝试一下。
