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