我最近参加了几个在线课程,我仍然看到一些教师默认情况下将以下元标记添加到他们的文档顶部:
<meta http-equiv="X-UA-Compatible" content="IE=edge">
这种想法似乎与 <meta charset="UTF-8">
一样重要和有用 .
但为什么?
根据Microsoft's Modern.ie documentation这是"best practice"其中"ensures Internet Explorer uses the latest engine" . 好,可以 .
但是,如果您按照the flow diagram on MSDN清楚地显示没有“X-UA兼容信息”的文档被转发到用户的"Compatibility View"首选项和if that's not set then just follow the !DOCTYPE declaration .
换句话说,除非用户具有某些兼容性视图设置,否则IE will just follow your !DOCTYPE and use the latest standards mode of your browser for rendering anyway ...根本不需要 X-UA-Compatible IE=Edge
语句 .
正如MSDN所说:“Use the HTML5 document type declaration to enable edge mode” .
那么在什么情况下需要 X-UA-Compatible IE=Edge
?
4 回答
当@David 's answer points out, unless you'在"Local Intranet"区域中托管网站时,几乎没有理由在您的网页中包含
<meta http-equiv="X-UA-Compatible" content="IE=edge">
,并且(根据Microsoft's best practice recommendations)绝对没有理由将其包含在HTML中 . (您应该将它放在服务器配置或网站 Headers 中 - 而不是放在HTML本身中 . )如果您正在考虑在项目中的任何位置使用
X-UA-Compatible
,您应该记住兼容性视图仅影响IE8,9和10.它仅在IE8中引入并在IE11中被禁用 .另请注意IE11是the only officially supported version of IE at this time . 所有旧版本都应该被认为是不安全的 .
如果这还不足以说服你不要使用它,那么请考虑微软声明IE8 and above already automatically render in Standards Mode when a <!DOCTYPE is present,这使得它更加毫无意义 .
您可以自己查看IE用于决定使用哪种文档模式的流程:
如您所见,如果没有
X-UA-Compatible
元标记或HTTP标头,它会检查用户's 1551169 settings. If the user doesn' t是否有任何网站,IE然后检查是否存在<!DOCTYPE
声明 . 如果找到一个,它会自动使用最新的标准模式(又名"EmulateIEx") . 如果没有,则恢复为Quirks模式 .更多原因是你不应该使用微软自己的“X-UA兼容”元标记(强调我的):
换句话说,它会减慢初始页面渲染速度
它只是为临时使用而设计的 .
换句话说,如果你绝对需要它,那就是better ways of implementing X-UA-Compatible .
IE11是唯一的officially supported version of IE .
在HTML中包含
X-UA-Compatible
元标记的唯一原因是为您的网站覆盖IE8,9和10中用户的"Compatibility View"设置 . 几乎在所有情况下,用户都不会更改这些设置(为什么会这样?),现在甚至不再支持这些浏览器了 .简而言之:这个标签已经有了它的一天 .
如果用户正在浏览位于“本地Intranet”区域中的页面(例如在公司Intranet上),则默认情况下会打开“兼容性视图” . 这是我使用“X-UA-Compatible”强制IE使用最新引擎的时候 .
只要它设置为“Edge”,它就会验证为HTML5,并且我告诉它只会导致IE重新呈现页面,如果该站点已经在兼容模式下呈现它 . 仍然,将它放在服务器配置(
.htaccess
等)比放入每个页面的HTML更好 .Henri Sivonen就浏览器如何选择渲染模式提供了非常有用的参考 . 你可以在那里阅读:https://hsivonen.fi/doctype/ .