窗口绑定在Firefox中不起作用

时间:2013-10-23 15:04:27

标签: javascript jquery firefox

我的脚本读的是这样的:

$(window).bind('popstate', function() {
    //some code
    //few more lines of code
});

此功能可在Chrome和Safari浏览器中完美运行。但是Firefox出于某种原因忽略了这个功能,并没有按预期工作。

4 个答案:

答案 0 :(得分:1)

  

请注意,只需调用history.pushState()或history.replaceState()   不会触发popstate事件。仅触发popstate事件   通过执行浏览器操作,例如单击后退按钮(或   在JavaScript中调用history.back()。

     

浏览器倾向于在页面加载时以不同方式处理popstate事件。   Chrome和Safari总是在页面加载时发出popstate事件,但是   Firefox没有。

https://developer.mozilla.org/en-US/docs/Web/Reference/Events/popstate

答案 1 :(得分:1)

而不是使用:

$(window).bind('popstate', function() {
    //some code
    //few more lines of code
});

您可以使用:

window.onpopstate = function() {
    //some code
    //few more lines of code
}

由于firefox正在使用W3C定义的历史API规则,所以你必须将它用于firefox,它也适用于chrome,safari和其他浏览器。

答案 2 :(得分:1)

当您点击浏览器的后退按钮时,您是否说Chrome和Safari会在页面加载时触发该事件?如果是前者,那是因为Chrome / Safari不符合HTML5规范=>永远不应该在页面加载时触发该事件。向上投票https://code.google.com/p/chromium/issues/detail?id=63040让Google解决此问题。

答案 3 :(得分:0)

如果您多次编码window.load()或多次拨打.onload(),请检查一下。这可能适用于IE,但不适用于Chrome和fireFox。