Internet Explorer是否支持pushState和replaceState?


140

有人知道Internet Explorer是否支持history.pushState()操纵浏览器历史记录的history.replaceState()方法吗?考虑到这些只是在Firefox 4中实现的,我没有屏息,但是有人知道它们是否会在IE9中出现吗?


3
如果IE9没有添加它,确实令人沮丧。
Eric Wahlforss,2010年

18
物有所值,History.js提供了相同的HTML5 API,同时优雅地降级了所有不支持它的浏览器(包括对数据和标题的支持以及replaceState功能)。使用它意味着您不必为IE9更改而更改代码。
balupton'1

2
另一方面,有些人反对退回哈希值。danwebb.net/2011/5/28/it-is-about-the-hashbangs
David Johnstone

1
@CHiRiLo:您需要包括对jQuery的引用。这是Google的javascript库,已被广泛使用,在您的网站中使用javascript时,会使您的生活变得更加轻松。
2012年

5
Google不是jQuery的主要开发者(它可能已经做出了贡献);它确实将其托管在其CDN上。
trojjer 2013年

Answers:


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的Platform Preview 3 支持历史API! 细节


截至今天,IE10历史记录中有一个使它失效的错误,popstate事件不会触发。详情点击这里:stackoverflow.com/questions/14698299/...
citykid

17

IE9不支持。

但是,您可以使用Polyfill来解决该功能-History.js https://github.com/browserstate/history.js

Modernizr很好地在这里列出了HTML 5 Polyfills https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-browser-Polyfills

需要注意的是,它将在仅支持HTML 4功能的浏览器中向您的URL添加查询字符串。


截至上述问题的评论,popstate不会在IE10中触发
Mandeep Jain

如果您必须支持IE 9或更低版本,History.js是一个很好的解决方案,但最小化为23KB。仅支持几种方法就足够了。
尼尔·梦露2015年


0

顺便说一句,由于pushState()中的绝对路径,您可能会收到此类错误。当我设置相对路径错误消失了。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.