Internet Explorer 是不是支持 pushState 和 replaceState?

Posted

技术标签:

【中文标题】Internet Explorer 是不是支持 pushState 和 replaceState?【英文标题】:Does Internet Explorer support pushState and replaceState?Internet Explorer 是否支持 pushState 和 replaceState? 【发布时间】:2011-04-12 23:26:04 【问题描述】:

有人知道 Internet Explorer 是否支持 manipulating browser history 的 history.pushState()history.replaceState() 方法吗?考虑到这些只是在 Firefox 4 中实现,我没有屏住呼吸,但有人知道它们是否会在 IE9 中实现?

【问题讨论】:

如果 IE9 不添加这个确实令人沮丧。 物有所值History.js 提供相同的 html5 API,同时优雅地降级任何不支持它的浏览器(包括对数据和标题的支持,以及 replaceState 功能)。使用它意味着您不必为 IE9 更改更改代码。 另一方面,有些人反对回退到散列。 danwebb.net/2011/5/28/it-is-about-the-hashbangs @CHiRiLo:您需要包含对jQuery 的引用。这是 Google 的一个广泛使用的 javascript 库,在您的网站中使用 javascript 时,它会让您的生活变得更轻松。 Google 不是 jQuery 的主要开发者(它可能有所贡献);它确实在其 CDN 上托管它。 【参考方案1】:

浏览器兼容性信息的最佳站点可能是CanIUse。这是history的部分。

总结 - IE9:否IE10:是(截至平台预览版 3)

IE9 的第一个候选版本(2011 年 2 月 10 日发布)不支持 history.pushState 或 history.replaceState。通常在产品进入 RC 阶段后不会添加新功能,因此最终的 IE9 不太可能支持这些方法。

在 IE9 确实具有的功能中,Microsoft 有很多 overview for developers。

更新:Internet Explorer 9 已推出(2011 年 3 月 14 日),绝对不支持 history.pushState()history.replaceState()

更新2:IE10 still does not support pushState / replaceState的当前平台预览。

更新 3:IE10 的 Platform Preview 3 支持历史 API! Details

【讨论】:

截至今天,IE10 历史记录中有一个 错误 使其无用,popstate 事件不会触发。详情在这里:***.com/questions/14698299/…【参考方案2】:

IE9 不支持。

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

Modernizr 在这里 https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-browser-Polyfills 列出 HTML 5 Polyfill 做得很好。

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

【讨论】:

与上述问题中的 cmets 一样,popstate 在 IE10 中不会触发 History.js 如果您必须支持 IE 9 或更低版本,它是一个很好的解决方案,但它是 23KB,已缩小。仅仅支持几种方法就够了。【参考方案3】:

Internet Explorer 10 引入了对 HTML5 草案规范的历史接口的支持,其中包括使您能够管理网站历史堆栈和 URL 的方法。

原文链接:https://msdn.microsoft.com/en-us/library/ie/hh920758(v=vs.85).aspx

【讨论】:

【参考方案4】:

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

【讨论】:

以上是关于Internet Explorer 是不是支持 pushState 和 replaceState?的主要内容,如果未能解决你的问题,请参考以下文章

为啥即使在模拟 Internet Explorer 8 文档模式时,Internet Explorer 11 也不支持条件注释?

html Internet Explorer支持使用条件注释。以下代码段在旧版Internet Explorer中添加了HTML5和CSS3支持

html Internet Explorer支持使用条件注释。以下代码段在旧版Internet Explorer中添加了HTML5和CSS3支持

html Internet Explorer支持使用条件注释。以下代码段在旧版Internet Explorer中添加了HTML5和CSS3支持

html Internet Explorer支持使用条件注释。以下代码段在旧版Internet Explorer中添加了HTML5和CSS3支持

html Internet Explorer支持使用条件注释。以下代码段在旧版Internet Explorer中添加了HTML5和CSS3支持