互联网浏览器是否支持pushState和replaceState?

140

有人知道Internet Explorer是否支持使用history.pushState()history.replaceState()方法来操作浏览器历史记录吗?考虑到这些方法刚在Firefox 4中实现,我并不抱太大希望,但有人知道它们是否会出现在IE9中吗?


3
如果IE9没有添加这个功能,那确实令人沮丧。 - Eric Quidenus-Wahlforss
18
就其价值而言,History.js 提供了相同的 HTML5 API,并且可以优雅地降级处理不支持它的任何浏览器(包括对数据和标题以及 replaceState 功能的支持)。使用它意味着您无需为 IE9 的更改修改代码。 - balupton
2
另一方面,一些人反对退回到哈希。http://danwebb.net/2011/5/28/it-is-about-the-hashbangs - David Johnstone
@balupton,我按照您的指示下载和安装history.js,但是在我刷新页面后,我的控制台上出现了诸如“ReferenceError: jQuery未定义”的错误,大约有23个。我做错了什么吗?请帮忙! - Tsukimoto Mitsumasa
1
@CHiRiLo:你需要引用 jQuery。这是一个来自谷歌的 JavaScript 库,被广泛使用,在网站中使用 JavaScript 时会让你的生活变得更加轻松。 - awe
5
谷歌不是jQuery的主要开发者(它可能做出了贡献),但它确实在其CDN上托管了jQuery。 - trojjer
4个回答

196

查看浏览器兼容性信息的最佳网站可能是CanIUse。这里是有关历史的部分。

总结 - IE9:不支持IE10:支持(截至平台预览版3)

IE9的第一个发布候选版(于2011年2月10日发布)不支持history.pushState或history.replaceState。一般情况下,在产品达到RC阶段后不会再添加新功能,因此最终的IE9支持这些方法的可能性非常小。

Microsoft为开发人员提供了一个有关IE9具有哪些功能的概述

更新:Internet Explorer 9已经发布(于2011年3月14日),并且明确不支持history.pushState()history.replaceState()

更新2:目前IE10的平台预览版仍然不支持pushState / replaceState

更新3:IE10的平台预览版3支持history API! 详情


截至今天,IE10的历史记录存在一个错误,使其无用,popstate事件不会触发。详情请参见:https://dev59.com/5m7Xa4cB1Zd3GeqPlhGf#15809188 - citykid

17

根据上述问题中的评论,popstate在IE10中不会触发。 - Mandeep Jain
History.js是一个很好的解决方案,如果你必须支持IE 9或以下版本,但它压缩后有23KB。仅仅为了支持一些方法而占用这么多空间有点太多了。 - Neil Monroe

0

顺便提一下,您可能会在pushState()的绝对路径中遇到此类错误。当我设置相对路径时,错误消失了。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接