我为我的网络应用程序使用历史API,有一个问题。
我做Ajax调用以更新页面上的一些结果,并使用history.pushState()为了更新浏览器的位置栏,没有页面重新加载。然后,当然,我使用window.popstate为了恢复以前的状态,当单击back按钮。
我做Ajax调用以更新页面上的一些结果,并使用history.pushState()为了更新浏览器的位置栏,没有页面重新加载。然后,当然,我使用window.popstate为了恢复以前的状态,当单击back按钮。
问题是众所周知的 – Chrome和Firefox会以不同的方式处理popstate事件。虽然Firefox不会在第一次加载时触发,但Chrome会执行。我想有Firefox样式,不加载事件,因为它只是更新结果与加载完全相同的事件。除了使用History.js,是否有解决方法?我不喜欢使用它的原因是 – 它需要太多的JS库本身,并且,因为我需要它被实现在CMS已经太多的JS,我想最小化JS我放入它。
所以,想知道是否有一种方法使Chrome不会启动’popstate’负载,或者,有人试图使用History.js作为所有的库捣碎在一起成一个文件。
解决方法
在版本19的Google Chrome中,来自@spliter的解决方案停止工作。正如@johnnymire指出,Chrome 19中的history.state存在,但它为null。
我的解决方法是添加window.history.state!== null到检查状态是否存在window.history:
var popped = ('state' in window.history && window.history.state !== null),initialURL = location.href;
我在所有主要浏览器和Chrome版本19和18中测试它。它看起来像它的工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。