如果一个网页以

<!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,IE的兼容性视图设置优先。默认情况下,这些设置强制所有intranet站点进入兼容性视图,而不管DOCTYPE如何。还有一个复选框可用于所有网站,无论DOCTYPE如何。

X-UA-Compatible覆盖兼容性视图设置,因此无论浏览器设置如何,页面都将以标准模式呈现。这将强制标准模式用于:

intranet页面当计算机管理员选择“在兼容性视图中显示所有网站”作为默认设置时,请考虑大公司、政府、大学当您无意中出现在Microsoft兼容性视图列表中时用户手动将您的网站添加到“兼容性视图设置”列表中的情况

仅DOCTYPE无法做到这一点;在这些情况下,无论DOCTYPE如何,您都将进入“兼容性视图”模式之一。

如果同时指定了元标记和HTTP标头,则元标记优先。

这个答案是基于检查IE8、IE9和IE10中决定文档模式的完整规则。注意,查看DOCTYPE是决定文档模式的最后一步。

其他回答

我认为这张来自微软的图表解释了一切。为了告诉IE如何呈现内容!DOCTYPE必须与X-UA-兼容的元标记一起使用!DOCTYPE本身对更改IE文档模式没有影响。

http://ie.microsoft.com/testdrive/ieblog/2010/Mar/02_HowIE8DeterminesDocumentMode_3.png

为了完整起见,您实际上不必将其添加到HTML中(这在HTML5中是未知的http equiv)

这样做,永远不要回头看(第一个例子是apache,第二个例子是nginx)

Header set X-UA-Compatible "IE=Edge,chrome=1"

add_header X-UA-Compatible "IE=Edge,chrome=1";

不同之处在于,如果只指定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在地址栏中隐藏烦人的浏览器兼容性按钮:

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