我正在为我的网络应用程序使用 History API,但遇到一个问题。
我执行 Ajax 调用来更新页面上的一些结果并使用history.pushState()
为了更新浏览器的地址栏而不重新加载页面。然后,当然,我用window.popstate
为了在单击后退按钮时恢复之前的状态。
这个问题是众所周知的——Chrome 和 Firefox 都对待这个问题popstate
事件不同。虽然 Firefox 不会在第一次加载时启动它,但 Chrome 会。我想要 Firefox 风格,而不是在加载时触发事件,因为它只是更新与加载时完全相同的结果。除了使用之外还有解决方法吗历史.js https://github.com/balupton/history.js/?我不想使用它的原因是——它本身需要太多的 JS 库,而且由于我需要在已经有太多 JS 的 CMS 中实现它,所以我想尽量减少放入其中的 JS 。
所以想知道有没有办法让Chrome不启动popstate
在加载时,或者也许有人尝试使用 History.js,因为所有库都混合到一个文件中。
在 Google Chrome 版本 19 中,@spliter 的解决方案停止工作。正如@johnnymire 指出的,Chrome 19 中的history.state 存在,但它是空的。
我的解决方法是添加window.history.state !== null检查 window.history 中是否存在状态:
var popped = ('state' in window.history && window.history.state !== null), initialURL = location.href;
我在所有主要浏览器以及 Chrome 版本 19 和 18 中测试了它。看起来它可以工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)