我刚试了一下,发现以下内容对我有效:
<meta http-equiv="X-UA-Compatible" content="IE=7,IE=9" >
注意:应该使用逗号而非分号!
我没有查看规范,但格式类似于 content="IE=7,chrome=1",这适用于Chrome Frame。我还发现 content="IE=7,9" 也有效,但我怀疑那并不是正确的格式。
编辑:
如果你的页面在 iframe 中,请注意一个严重问题。如果你在父页面中使用上述代码,而该父页面在 IE9 严格模式以下的任何模式下都存在,则 IE9 将回退到 IE8 模式(忽略 IE=7 请求!)。欢迎分享任何已知解决方法 :) 这可能与 IE11 无关。
以上似乎是设计特性的副作用,即 iframe(和我认为 frame)要么全部处于 IE9 模式,要么全部低于 IE9 模式。不能将 IE9 帧与 < IE9 帧混合,参见 MS 问题 #599022 和 #635648。
编辑2:
请注意,IE11 仅支持 "IE=edge"(不支持 IE=11),使用 IE=edge 对 IE 功能(包括用户代理)有重大影响。
编辑3:
IE=edge
。编辑4:
X-UA-Compatible
已从 Microsoft Edge 浏览器中删除。只有 Internet Explorer 具有兼容性模式。请注意,如果你在 Windows Phone 10 应用程序中使用 WebView,则仍在使用 IE11(而非 Edge)。
另外,由于各种原因,你不能信任用户代理告诉你正确的兼容性级别,而应使用 JavaScript 中的 document.documentMode
。
编辑5:
对于某些边缘情况,例如客户端使用 ActiveX 的 IE11(作为包装应用程序中的 WebView)可能会将 IE11 降回到 IE7 模式,因此 IE11 仍需要将 X-UA-Compatible
设置为 IE=EDGE
。
有人提到的双模式应该可以工作(但是根据微软的显示并没有),这是我在微软文档中看到的最接近描述应该可以工作的内容。下面有一个更新,显示meta属性值应采取的正确形式。
因此,如果您使用以下内容:
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7; IE=EmulateIE9">
Robocat指出,使用逗号而不是Microsoft所展示的分号是正确的做法。我测试过了,对我有效。我已经更新了我的test page。
因此,这是正确的形式(如robocat建议的):
<meta http-equiv="X-UA-Compatible" content="IE=7, IE=9">
这是不正确的表单(根据微软的建议):
<meta http-equiv="X-UA-Compatible" content="IE=7; IE=9">
到目前为止,我已经尝试了所有这些方法,但在IE9上都无法正常工作:
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" >
<meta http-equiv="X-UA-Compatible" content="IE=8" >
<httpProtocol>
<customHeaders>
<clear />
<add name="X-UA-Compatible" value="IE=EmulateIE8" />
</customHeaders>
</httpProtocol>
这太令人沮丧了,这些元标签似乎都不起作用。微软,为什么在支持文档中提到的东西会如此困难?我们必须花费数小时进行浏览器之争。你在浪费大家的时间。
<meta http-equiv="X-UA-Compatible" content="IE=7, IE=9">
对于IE9,这将使我在IE9标准下使用IE 9兼容模式。 对于IE8,这将给我IE8浏览器模式,文档模式为IE7标准。
对我来说,这个适用于IE9。
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8"/>
哇,微软真的在这里制造了一个噩梦。我们将会长时间地讨论这个问题!
不管怎样,这对我来说是有效的。
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7; IE=EmulateIE9" />
我认为你需要的是:
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7; IE=EmulateIE9">
根据http://blogs.msdn.com/b/ie/archive/2010/06/16/ie-s-compatibility-features-for-site-developers.aspx所述,它指出了一个示例,该示例结合了值,以便IE8在IE7标准模式下呈现网页,而IE9在IE9的标准模式下呈现网页:
然而,我自己却无法使其正常工作。
<!--[if IE 8]>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
<![endif]-->
<meta>
标签进行更改。 - bobince