如果一个网页以
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
如果页面以开头
<!DOCTYPE html>
<html>
<head>
<!-- without X-UA-Compatible meta -->
如果没有区别,我想我可以忽略X-UA-兼容的元头,因为我只希望它在所有IE版本中以最标准的模式呈现。
如果一个网页以
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
如果页面以开头
<!DOCTYPE html>
<html>
<head>
<!-- without X-UA-Compatible meta -->
如果没有区别,我想我可以忽略X-UA-兼容的元头,因为我只希望它在所有IE版本中以最标准的模式呈现。
当前回答
2.1.3.5 X-UA-兼容元标记和HTTP响应头
此功能不会在任何版本的Microsoft Edge中实现。
<meta http-equiv="X-UA-Compatible" content="IE=9; IE=8; IE=7; IE=EDGE" />
看见https://msdn.microsoft.com/en-us/library/ff955275(v=vs.85).aspx
是的,我知道我参加派对迟到了,但我只是有一些问题和讨论,最后我的老板让我从我一直在处理的所有文件中删除了X-UA-兼容标签。
如果此信息已过时或不再相关,请更正。
其他回答
使用content=“IE=边缘,铬=1” 跳过其他X-UA-兼容模式
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
--------------------------
无兼容性图标IE9地址栏不会显示“兼容性视图”按钮,页面也不会显示杂乱的菜单、图像和文本框。功能需要此元标记才能在IE8上启用javascript::JSON.parse()(即使存在<!DOCTYPE html>)现代HTML/CSS/JavaScript的正确呈现/执行更有效(更好)。性能Trident渲染引擎在其边缘模式下应该运行得更快。
用法
在HTML中
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
IE=边缘表示IE应使用其渲染引擎的最新(边缘)版本chrome=1表示IE应使用chrome渲染引擎(如果已安装)
或者在web服务器的配置中更好:(另见RiaD的回答)
pixeline提出的Apache<IfModule mod_setenvif.c><IfModule mod_headers.c>浏览器匹配MSIE ie标题集X-UA-兼容“IE=边缘,铬=1”env=IE</IfModule></IfModule><IfModule mod_headers.c>标头附加Vary用户代理</IfModule>Stef Pause提议的Nginx服务器{#...add_header X-UA-兼容“IE=边缘,铬=1”;}Lucas Riutzel提议的清漆代理子vcl交付{如果(resp.http.Content-Type~“text/html”){set resp.http.X-UA-Compatible=“IE=边缘,铬=1”;}}IIS(自v7起)<配置><system.webServer><http协议><customHeaders><add name=“X-UA-Compatible”value=“IE=边缘,铬=1”/></customHeaders></httpProtocol></system.webServer></配置>
自IE11以来,Microsoft建议使用边缘模式
Lynda注意到(见评论),IE11中的兼容性更改建议使用边缘模式:
从IE11开始,边缘模式是首选的文档模式;它代表了对浏览器可用的现代标准的最高支持。
但微软的立场并不明确。另一个MSDN页面不推荐边缘模式:
因为边缘模式强制所有页面以标准模式打开,无论Internet Explorer的版本如何,您可能会对使用Internet Explorer查看的所有页面使用此选项。不要这样做,因为X-UA-Compatible标头仅支持启动使用Windows Internet Explorer 8。
相反,Microsoft建议使用<!DOCTYPE html>:
如果要打开所有受支持的Internet Explorer版本您的页面处于标准模式,请使用HTML5文档类型声明〔…〕
正如里卡多(在下面的评论中)解释的那样,任何DOCTYPE(HTML4、XHTML1…)都可以用于触发标准模式,而不仅仅是HTML5的DOCTYPE。重要的是页面中始终有一个DOCTYPE。
Clara Onager甚至在旧版本的指定传统文档模式中注意到:
边缘模式仅用于测试目的;不要在生产环境中使用它。
令人困惑的是,乌斯曼·Y认为克拉拉·奥纳格尔所说的是:
[…]示例仅用于说明目的;不要在生产环境中使用它。<meta http equiv=“X-UA-Compatible”content=“IE=7,9,10”>
好在这个答案的其余部分,我给出了更多的解释,为什么使用content=“IE=edge,chrome=1”是一个很好的生产实践。
历史
多年来(2000年至2008年),IE市场份额超过80%。IE v6被视为事实上的标准(仅IE6在2003年、2004年、2005年和2006年的市场份额为80%至97%,所有IE版本的市场份额都更大)。
由于IE6不遵守Web标准,开发人员不得不使用IE6测试他们的网站。这种情况对微软(MS)来说很好,因为网络开发人员必须购买MS产品(例如,如果不购买Windows,就不能使用IE),而保持不合规则更有利可图(即,微软希望成为排除其他公司的标准)。
因此,许多网站仅符合IE6,并且由于IE不符合web标准,所有这些网站都没有在符合标准的浏览器上很好地呈现。更糟糕的是,许多网站只需要IE。
然而,在这个时候,Mozilla开始了Firefox开发,尽可能遵守所有的网络标准(其他浏览器被实现为呈现IE6所做的页面)。随着越来越多的web开发人员希望使用新的web标准功能,Firefox比IE更支持越来越多的网站。
当IE市场份额减少时,MS意识到保持标准不兼容不是一个好主意。因此,微软开始发布新的IE版本(IE8/IE9/IE10),并越来越多地遵守网络标准。
web不兼容问题
但问题是所有为IE6设计的网站:微软不能发布与这些旧的IE6设计网站不兼容的新IE版本。微软要求开发者在网页中添加额外的数据(X-UA-兼容),而不是推导网站设计的IE版本。
IE6仍在2016年使用
如今,IE6仍在使用(2016年为0.7%)(2014年1月为4.5%),一些互联网网站仍仅符合IE6标准。一些intranet网站/应用程序使用IE6进行测试。一些intranet网站仅在IE6上100%可用。这些公司/部门倾向于推迟迁移成本:其他优先事项,没有人再知道网站/应用程序是如何实现的,旧网站/应用的所有者破产了。。。
2013年IE6的使用量中,中国占50%,但随着中国Linux发行版的播出,未来几年可能会发生变化。
对你的网络技能充满信心
如果你(试图)尊重网络标准,你可以只使用http-equiv=“X-UA-Compatible”content=“IE=edge,chrome=1”。要保持与旧浏览器的兼容性,只需避免使用最新的web功能:使用您希望支持的最旧浏览器支持的子集。或者,如果你想更进一步,你可以采用优雅降级、渐进增强和无阻碍JavaScript等概念。(你可能也很乐意阅读web开发人员应该考虑什么?)
不要在意最好的IE版本渲染:这不是你的工作,因为浏览器必须符合web标准。如果您的网站符合标准并使用适度最新的功能,那么浏览器必须符合您的网站。
此外,由于有许多活动要杀死IE6(IE6不再是,MS活动),现在您可以避免浪费时间进行IE测试!
个人IE6经验
2009-2012年,我在一家使用IE6作为官方单一浏览器的公司工作。我只能为IE6实现一个内部网网站。我决定尊重web标准,但使用IE6功能子集(HTML/CSS/JS)。
这很难,但当公司改用IE8时,网站仍然呈现良好,因为我使用了Firefox和firebug来检查网络标准兼容性;)
不同之处在于,如果只指定DOCTYPE,IE的兼容性视图设置优先。默认情况下,这些设置强制所有intranet站点进入兼容性视图,而不管DOCTYPE如何。还有一个复选框可用于所有网站,无论DOCTYPE如何。
X-UA-Compatible覆盖兼容性视图设置,因此无论浏览器设置如何,页面都将以标准模式呈现。这将强制标准模式用于:
intranet页面当计算机管理员选择“在兼容性视图中显示所有网站”作为默认设置时,请考虑大公司、政府、大学当您无意中出现在Microsoft兼容性视图列表中时用户手动将您的网站添加到“兼容性视图设置”列表中的情况
仅DOCTYPE无法做到这一点;在这些情况下,无论DOCTYPE如何,您都将进入“兼容性视图”模式之一。
如果同时指定了元标记和HTTP标头,则元标记优先。
这个答案是基于检查IE8、IE9和IE10中决定文档模式的完整规则。注意,查看DOCTYPE是决定文档模式的最后一步。
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
要使这条线按预期工作,请确保:
它是<head>之后的第一个元素在元标记之前不使用条件注释,例如在<html>元素上
否则,某些IE版本会忽略它。
更新
这两条规则被简化了,但它们很容易记住和验证。尽管MSDN文档指出您可以将标题和其他元标记放在这个之前,但我不建议这样做。
如何使用条件注释。
关于头部元素顺序的有趣文章。(blogs.msdn.com,用于IE)
参考
从MSDN文档中:
X-UA-Compatible[…]必须出现在网页的标题中(HEAD部分)在除标题元素和其他元元素之外的所有其他元素之前。
由于我无法对标记的答案添加评论,我将在此处发布此内容。
除了正确的答案之外,您确实可以验证这个答案。因为这个元标记只针对IE,所以你只需要添加一个IE条件。
<!--[if IE]>
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
<![endif]-->
这样做就像添加任何其他IE条件语句一样,只适用于IE,不会影响其他浏览器。
使用此选项可强制IE在地址栏中隐藏烦人的浏览器兼容性按钮:
<meta http-equiv="X-UA-Compatible" content="IE=edge" />