fri*_*der 5 jquery internet-explorer-10
我想知道什么可能导致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!"); });
Run Code Online (Sandbox Code Playgroud)
如果我用IE 10(10.0.9200.16484)测试这个非常简单的例子,我从未收到过弹出状态事件(即警报框永远不会出现).即使我离开并通过IE的后退按钮返回.即这个Q/A并不能解决我的问题.
使用Chrome 24,一切正常.
您确定没有使用history.pushState()或history.replaceState()来调用它吗?
仅当您使用浏览器执行某些操作(例如后退按钮)或使用history.back()调用时,才会触发popstate。
除此之外,它可以与 chrome 一起使用,因为它会在加载页面时发出 popstate,因此请检查以确保事件确实正在加载。检查这一点应包含在:
if (document.readyState == "complete") {
initApplication();
}
Run Code Online (Sandbox Code Playgroud)
我相信 popstate 包含在 document.readyState 中,所以尝试一下。