Internet Explorer 10和popstate没有绑定

我想知道什么可能导致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的后退按钮返回。 即这个Q / A并不能解决我的问题。

使用Chrome 24 ,一切正常。

你确定你没有使用history.pushState()或history.replaceState()来调用它吗?

popstate仅在您使用浏览器执行某些操作时触发,例如后退按钮,或使用history.back()调用。

除此之外,它将与chrome一起使用,因为它会在页面加载时拍摄popstate,因此请检查以确保事件实际上已加载。 检查这个应该包括在:

 if (document.readyState == "complete") { initApplication(); } 

我相信popstate包含在document.readyState中,所以试一试。