我的脚本读的是这样的:
$(window).bind('popstate', function() {
//some code
//few more lines of code
});
此功能可在Chrome和Safari浏览器中完美运行。但是Firefox出于某种原因忽略了这个功能,并没有按预期工作。
答案 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。