html5 – 在Chrome中对页面加载进行popstate

前端之家收集整理的这篇文章主要介绍了html5 – 在Chrome中对页面加载进行popstate前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我为我的网络应用程序使用历史API,有一个问题。
我做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中测试它。它看起来像它的工作。

猜你在找的HTML5相关文章