【发布时间】:2011-09-19 06:57:10
【问题描述】:
我正在为我的网络应用程序使用 History API,但遇到了一个问题。
我执行 Ajax 调用来更新页面上的一些结果并使用history.pushState() 来更新浏览器的位置栏,而无需重新加载页面。然后,当然,我使用window.popstate 以便在单击后退按钮时恢复之前的状态。
这个问题是众所周知的——Chrome 和 Firefox 对待 popstate 事件的方式不同。虽然 Firefox 不会在第一次加载时启动它,但 Chrome 会。我希望拥有 Firefox 风格,并且不会在加载时触发事件,因为它只是在加载时使用完全相同的结果更新结果。除了使用History.js,还有其他解决方法吗?我不想使用它的原因是——它本身需要太多的 JS 库,而且由于我需要在已经有太多 JS 的 CMS 中实现它,所以我想最小化我放入的 JS .
所以,想知道是否有办法让 Chrome 在加载时不启动 popstate,或者,也许有人试图使用 History.js,因为所有库都被混合到一个文件中。
【问题讨论】:
-
补充一点,Firefox 的行为是指定的和正确的行为。从 Chrome 34 开始,它现已修复!为 Opera 开发者喝彩!
标签: javascript html google-chrome dom-events browser-history