Javascript 窗口绑定在Firefox中不起作用

Javascript 窗口绑定在Firefox中不起作用,javascript,jquery,firefox,Javascript,Jquery,Firefox,我的脚本如下所示: $(window).bind('popstate', function() { //some code //few more lines of code }); 该功能在Chrome和Safari浏览器中完全可以正常工作。但是Firefox出于某种原因忽略了这个功能,并且没有按预期工作 请注意,只需调用history.pushState()或history.replaceState() 不会触发popstate事件。popstate事件仅被触发 通过执行浏览

我的脚本如下所示:

$(window).bind('popstate', function() {
    //some code
    //few more lines of code
});
该功能在Chrome和Safari浏览器中完全可以正常工作。但是Firefox出于某种原因忽略了这个功能,并且没有按预期工作

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

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

而不是使用:

$(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中使用该API,它也适用于chrome、safari和其他浏览器

你是说Chrome和Safari会在页面加载时触发事件,还是在单击浏览器的后退按钮时触发事件?如果是前者,那是因为Chrome/Safari不符合HTML5规范=>页面加载时不应触发该事件。向上投票,让谷歌来解决这个问题。

请检查您是否多次编码
window.load()
,或者多次调用
.onload()
。这可能适用于IE,但不适用于Chrome和fireFox。

Use
on()
和not
bind()
适用于我使用MDN的演示:您需要提供复制问题的代码。最好附加侦听器,而不是重写它们。改用
窗口。addEventListener
。@EliranMalka我同意。