其他人提到的双模式应该可以工作(但 Microsoft 没有显示),并且是我在 MS 文档中看到的最接近的应该按描述工作的东西。下面的更新显示了元属性值应采用的正确形式。
所以如果你使用这个:
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7; IE=EmulateIE9">
不幸的是,由于 x-ua 兼容引擎所做的模糊版本矢量化,您将得到 IE8 渲染为 IE8。请参阅此文档:
定义文档兼容性:了解MSDN 上的内容属性值。在该部分中,您将看到在前半部分,他们定义的任何版本向量定义为大于当前浏览器版本将被解释为最大的可用渲染引擎。因此,emulateIE9 被翻译成 emulateIE8。愚蠢的。
然后,实际上,他们实际上同时讨论了使用上面代码片段中的多个版本向量来排除特定引擎。但由于模糊的版本逻辑,这永远行不通。啊,微软。再次失败。
在元数据周围使用 CC 不起作用的原因是浏览器必须在遇到 CC 时选择了渲染引擎。根据 MS 自己的文档,除了其他元或标题之外,x-ua 元必须位于标头中的任何其他内容之前。
如果有人能弄清楚这一点,我会全力以赴,因为我迫切希望将 IE8 排除在支持之外,同时包括 IE9。
重要更新:
Robocat指出,如 Micrsoft 所示,使用逗号而不是分号是正确的做法。我测试了它,它对我有用。我已经更新了我的测试页。
所以正确的形式是这样的(如robocat所建议的):
<meta http-equiv="X-UA-Compatible" content="IE=7, IE=9">
不正确的形式是这样的(正如微软所建议的那样):
<meta http-equiv="X-UA-Compatible" content="IE=7; IE=9">