如果一个网页以
<!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版本中以最标准的模式呈现。
当前回答
使用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来检查网络标准兼容性;)
其他回答
我认为这张来自微软的图表解释了一切。为了告诉IE如何呈现内容!DOCTYPE必须与X-UA-兼容的元标记一起使用!DOCTYPE本身对更改IE文档模式没有影响。
http://ie.microsoft.com/testdrive/ieblog/2010/Mar/02_HowIE8DeterminesDocumentMode_3.png
如果你在与服务器相同的网络中使用你的网站,IE喜欢切换到兼容模式,尽管DOCTYPE。添加meta-http equiv=“X-UA-Compatible”content=“IE=Edge”将禁用此不需要的行为。
这是LITERALLY 1谷歌查询,但这里是:
http://msdn.microsoft.com/en-us/library/jj676915(v=vs.85).aspx
了解传统文档模式使用以下值以边缘模式显示网页,即Internet Explorer支持的最高标准模式,来自Internet Explorer 6至IE11。<meta http equiv=“x-ua-compatible”content=“IE=边缘”注意,这在功能上等同于使用HTML5 doctype。它将Internet Explorer置于最高支持级别文档模式。Edge most对于定期维护最有用定期测试互操作性的网站多种浏览器,包括Internet Explorer。笔记从IE11开始,边缘模式被认为是首选的文档模式。(在早期版本中,它被认为是实验性的。)要了解更多信息,请参阅文档模式已弃用。从开始Windows Internet Explorer 8,一些web开发人员使用边缘模式meta元素以隐藏地址栏上的“兼容性视图”按钮。从IE11开始,这不再是必要的,因为按钮已被移除从地址栏中选择。因为它强制打开所有页面标准模式,无论Internet Explorer的版本如何可能会尝试对通过Internet查看的所有页面使用边缘模式探索者不要这样做,因为X-UA-Compatible标头仅支持从Internet Explorer 8开始。提示如果您希望所有受支持的Internet Explorer版本都以标准模式打开页面,请使用HTML5文档类型声明,如前面的示例所示。
搜索结果还包括:
<meta http-equiv=“X-UA-Compatible”content=“IE=edge”>做什么?
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
要使这条线按预期工作,请确保:
它是<head>之后的第一个元素在元标记之前不使用条件注释,例如在<html>元素上
否则,某些IE版本会忽略它。
更新
这两条规则被简化了,但它们很容易记住和验证。尽管MSDN文档指出您可以将标题和其他元标记放在这个之前,但我不建议这样做。
如何使用条件注释。
关于头部元素顺序的有趣文章。(blogs.msdn.com,用于IE)
参考
从MSDN文档中:
X-UA-Compatible[…]必须出现在网页的标题中(HEAD部分)在除标题元素和其他元元素之外的所有其他元素之前。
使用此选项可强制IE在地址栏中隐藏烦人的浏览器兼容性按钮:
<meta http-equiv="X-UA-Compatible" content="IE=edge" />