在网站中使用<meta http-equiv="X-UA-Compatible" content="IE=8" />模式是一个好的实践吗?

14

我最近发现将以下内容添加到网站头部的乐趣:

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

网站能正常运行,CSS很美丽,生活美好。但我有点担心这是否是一个好的做法?

那么对于一台安装了IE7浏览器的旧电脑呢?那个版本的IE7实际上能够访问IE8标准模式吗?

6个回答

24
针对你问题的最后一部分,简短的回答是不行:IE7 无法强制以 IE8 模式运行。因此,使用 X-UA-Compatible 标头无法让旧版本的 IE 认为它们是新版本。(如果这样可以的话,我们就可以开始使用 content="IE-10" 并摆脱对向后兼容性的担忧了) X-UA-Compatible 标志的作用是告诉较新版本的 IE 回退到兼容模式以模拟旧版本。因此,你的 content="IE-8" 标志对 IE7 或 IE8 没有影响,但会使 IE9 回退到 IE8 模式。
这意味着 IE9 将在尝试保持向后兼容性的前提下放弃其新功能。
如果这正是你想要从 IE9 获得的结果,请使用 X-UA-Compatible 标头。如果不是,那么就不要使用它。
(值得注意的是,IE 中的向后兼容模式已知不太好地实现与尝试模拟的版本的真实副本100%兼容,因此请不要认为你会在 IE9 中得到一个完美运行于 IE8 的副本,两者都有自己不同的怪癖)

非常好的答案,你解决了我的误解。现在我感觉有点儿蠢:) 所以这是为了向后兼容:) 谢谢! :) - Nadine
1
这部分是不正确的。虽然它将强制未来版本的向后兼容模式,但它也将强制当前兼容性(客户端可覆盖)为IE8。例如,如果组策略指定所有内部网站使用兼容性视图,则使用此标记(作为实际标头或嵌入在HTML中)将告诉IE忽略GP,因为该站点已经在所述版本上进行了充分测试。然而,最后一部分是正确的,无论您是否在最新版本的IE上呈现还是在指定版本上呈现,如果没有进行适当的测试,都会出现问题。 - Colton
谢谢Sparksis,这正是我在寻找的。我注意到我的网站在IE8中随机回退到IE7模式,导致呈现出奇怪的效果。使用content="IE-8"解决了这个问题。 - Josh Mc
4
Internet Explorer应该下地狱! - Marco Demaio
1
@spudley 它会有自己的怪癖,这些怪癖与IE8或IE9在正常模式下不同。你能否分享更多信息?有引用或链接吗? - Mike

2

还有一件事需要注意,微软提供的标签示例并不总是有效的。请阅读定义文档兼容性,尤其是页面底部的社区补充内容。

就最佳实践而言,它们可能不是最好的长期解决方案,但在IE9发布和网站崩溃时非常有用。


1

正如每个人所说的那样,向后兼容性只有在严格需要时才应用,因为它并不完美,而且不能仅通过添加兼容性标签将新浏览器的功能转移到旧浏览器中。


0

我正在使用Discus,它不兼容旧版本的IE。我得到了帮助,他们建议在我的页面代码中使用content="IE-8"...

content="IE-8" 还告诉我的浏览器改变了表格和文本等的大小 :p 我改成了 content="IE-7",现在完美运行。


0
我在Windows 7的测试环境中安装了IE8,并且它在渲染我的代码时像IE7一样(我的meta标签中没有content="IE7")! 在另一台安装了Windows 7和IE8的机器上,代码被渲染得不同,但符合我的要求。 有一篇有趣的文章http://www.greywyvern.com/?post=313指出IE8的渲染方式取决于系统上安装的服务包(这篇文章是关于XP的,但我遇到了相同的问题,因为我的系统是Windows 7)。
所以现在我在我的网页上加入了content="IE10",我的网站在IE10、IE9和IE8上都能正确显示。

0

在程序中添加 <meta http-equiv=“X-UA-Compatible” content=“IE=8” /> 模式可能不是一个好主意,因为它会阻止您的应用程序利用更新版本的浏览器。但我认为添加 <meta http-equiv="X-UA-Compatible" content="IE=Edge" /> 是好的,因为它强制浏览器按照最新版本的标准进行渲染。

注意:添加 Edge 可能会破坏您的代码,因为您的应用程序可能没有针对这个新版本进行测试。在大多数情况下,这完全没问题,但你永远不知道。

有关其他可能选项的详细信息,请参考

“X-UA-Compatible” content=“IE=9; IE=8; IE=7; IE=EDGE”


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接