我的脚本是这样的:
$(window).bind('popstate', function() {
//some code
//few more lines of code
});
此功能在 Chrome 和 Safari 浏览器中完美运行。但是 Firefox 出于某种原因忽略了此功能,并且无法按预期工作。
我的脚本是这样的:
$(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 不会。
https://developer.mozilla.org/en-US/docs/Web/Reference/Events/popstate
而不是使用:
$(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 和其他浏览器。
您是说 Chrome 和 Safari 在页面加载或单击浏览器的后退按钮时触发事件?如果是前者,那是因为 Chrome/Safari 不符合 HTML5 规范 => 永远不应在页面加载时触发该事件。投票https://code.google.com/p/chromium/issues/detail?id=63040让谷歌解决这个问题。
请检查您是否多次编码window.load()
或多次致电.onload()
。这可能适用于 IE,但不适用于 Chrome 和 fireFox。