IE兼容模式

时间:2012-06-24 13:22:55

标签: internet-explorer internet-explorer-8 x-ua-compatible

我不知道这些模式是如何工作的,例如,如果我添加

<!DOCTYPE>将其设为html5文档,然后添加

<meta http-equiv="X-UA-Compatible" content="IE=9" />

IE会在IE 9标准中呈现吗?

但我的问题是,如果用户没有IE 9但有IE 67并且我的网页会有一些仅适用于IE 9的功能,那该怎么办呢?仍然以某种方式工作或不工作?

2 个答案:

答案 0 :(得分:2)

首先,你在问题中单独写<!DOCTYPE>的方式是无效的;您需要指定要使用的doctype。如果要使用HTML5,则doctype行应如下所示:

<!DOCTYPE html>

当你有一个工作的doctype时,IE将以标准模式呈现页面。如果没有doctype,IE将使用Quirks模式。 Quirks模式基本上是IE5兼容模式,其中包含许多非标准内容,这些内容在其他所有浏览器中都会中断。因此,您应该始终使用doctype。

其次X-UA-Compatible:这告诉IE使用特定的渲染模式,如果可以

显然,旧版本的IE无法使用较新IE版本的渲染模式,因此该标记实际上只是出于向后兼容性的原因。因此,对你的问题的直接回答是“否”:IE6将无法在IE9模式下呈现,也不会在IE7或IE8中呈现。

IE8能够使用IE7兼容模式,IE9兼具IE8和IE7兼容模式。此标记将触发IE使用这些模式而不是其标准模式。

如果您的网站是针对旧版本的IE编写的,并且在较新版本中无法正常运行,则此功能可用作快速解决方案。如果你在一个每个人都被迫使用IE的内部网络,这很好,但在更广泛的互联网上,你还需要支持其他浏览器,如果一个网站在IE8中工作但在IE9中断,那么它很有可能在其他浏览器中也会中断。因此,我建议X-UA-Compatible在现实世界中并非真正有用。

但是,有一种情况可以包括它:IE中有配置设置可以设置为自动触发向后兼容模式。所以IE8用户可能在IE7模式下甚至不知道它。

这显然是个问题,但将X-UA-Compatible指定为更高的值会强制IE采用更新的渲染模式。这是一件好事。

但是,在这种情况下,您不应该指定要使用的IE版本 - 因为如果指定IE=9,IE10用户会发生什么?相反,您应该使用特殊情况值edge。这会强制IE使用它可用的最新渲染模式,而不管其他任何设置。在大多数情况下,这就是你想要做的。代码如下所示:

<meta http-equiv="X-UA-Compatible" content="IE=edge" />

希望有所帮助。

哦,顺便说一句,X-UA-Compatible也可以在HTTP标头中指定,而不是在HTML代码中指定。

答案 1 :(得分:1)

不,它不会以某种方式工作 - 这是完全不可能的。 IE 6如何在没有更新的情况下获得IE 9渲染引擎?

确实,IE 7及更早版本don't even support X-UA-Compatible

  

从Windows Internet Explorer 8 开始,httpEquiv属性还支持值x-ua-compatible,允许开发人员指定Windows Internet Explorer应使用的文档兼容性模式显示网页。为此,请将content属性设置为String值,该值包含以逗号分隔的一个或多个以下值的列表。