我不知道这些模式是如何工作的,例如,如果我添加
<!DOCTYPE>
将其设为html5
文档,然后添加
<meta http-equiv="X-UA-Compatible" content="IE=9" />
IE会在IE 9标准中呈现吗?
但我的问题是,如果用户没有IE 9
但有IE 6
或7
并且我的网页会有一些仅适用于IE 9
的功能,那该怎么办呢?仍然以某种方式工作或不工作?
答案 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值,该值包含以逗号分隔的一个或多个以下值的列表。