1

我的脚本是这样的:

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

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

4

4 回答 4

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

于 2013-10-23T16:45:14.760 回答
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 和其他浏览器。

于 2013-11-14T10:21:41.833 回答
1

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

于 2013-12-04T21:27:04.043 回答
0

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

于 2014-03-25T06:42:38.547 回答