Internet Explorer 10和popstate没有绑定

时间:2013-02-05 00:40:48

标签: jquery internet-explorer-10

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

使用 Chrome 24 ,一切正常。

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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