我真的不明白这些模式是如何工作的,例如,如果我添加
<!DOCTYPE>
使其成为html5
文档,然后添加
<meta http-equiv="X-UA-Compatible" content="IE=9" />
IE 会以 IE 9 标准呈现,对吗?
但是我的问题是,如果用户没有IE 9
但有IE 6
,或者7
我的页面将具有一些仅适用于的功能,IE 9
它是否还能以某种方式工作?
我真的不明白这些模式是如何工作的,例如,如果我添加
<!DOCTYPE>
使其成为html5
文档,然后添加
<meta http-equiv="X-UA-Compatible" content="IE=9" />
IE 会以 IE 9 标准呈现,对吗?
但是我的问题是,如果用户没有IE 9
但有IE 6
,或者7
我的页面将具有一些仅适用于的功能,IE 9
它是否还能以某种方式工作?
首先,您<!DOCTYPE>
在问题中自己写的方式无效;您需要指定要使用的文档类型。如果您想使用 HTML5,则 doctype 行应如下所示:
<!DOCTYPE html>
当你有一个可用的文档类型时,IE 将以标准模式呈现页面。如果没有 doctype,IE 将使用 Quirks 模式。Quirks 模式基本上是一种 IE5 兼容模式,其中包含许多在其他浏览器中都无法使用的非标准内容。因此,您应该始终使用文档类型。
其次:如果可以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 代码里面。
不,它不会以某种方式起作用——那是完全不可能的。IE 6 如何在没有更新的情况下获得 IE 9 渲染引擎?
事实上,IE 7 及更早版本甚至不支持 X-UA-Compatible
:
从 Windows Internet Explorer 8 开始,该
httpEquiv
属性还支持 的值x-ua-compatible
,它允许开发人员指定 Windows Internet Explorer 用于显示网页的文档兼容模式。为此,请将 content 属性设置为包含以下一个或多个值的逗号分隔列表的字符串值。