internet-explorer - meta http-equiv=“X-UA-Compatible” content=“IE=edge”> 区别是什么?

  显示原文与译文双语对照的内容

如果一个网页以下列方式启动,则有什么区别


<!DOCTYPE html> 
<html> 
 <head> 
 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 

如果页面以


<!DOCTYPE html> 
<html> 
 <head> 
 <!-- without X-UA-Compatible meta -->

如果没有区别的话,我想我完全可以忽略 X-UA-Compatible 元呈现标题,因为我只希望它是在大多数的标准模式在所有 IE 版本。

时间:

区别在于,如果只指定 DOCTYPE,IE的兼容性视图设置优先。 默认情况下,这些设置强制所有的intranet站点进入兼容视图,而不考虑 DOCTYPE 。 也有一个复选框用于所有网站的兼容性视图,而不考虑 DOCTYPE

IE Compatibility View Settings dialog

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

  • 内部网页面
  • 当计算机管理员选择"在兼容性视图中显示所有网站"作为default—think大公司,政府,大学时的外部网页
  • 当你无意中在兼容性视图列表列表中
  • 用户在兼容性视图设置中手动将你的网站添加到列表的情况

DOCTYPE 单独不能这样做;在这些情况下,不管 DOCTYPE 是什么情况,你都将在其中一个兼容性视图模式中结束。

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

这个回答是基于检查格式的完整的规则来决定文档模式 8 浏览器IE9 以及 IE10 。 注意,查看 DOCTYPE 是决定文档模式的最后一个回退。

因为我不能给标记的答案添加评论,我将在这里张贴。

除了正确的答案,你确实可以得到这个验证。 因为这个meta标记只针对 IE,你需要做的就是添加一个 IE 条件。


<!--[if IE]>
 <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
<![endif]-->

这样做就像添加任何其他 IE 条件语句,只适用于 IE 而不会影响其他浏览器。

为了实现完整性,你实际上不需要将它添加到 HTML ( 这是在HTML5中未知的http-equiv )

这样做并且没有回首( 重整计划的第一个例子,第二个用于 Nginx )


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

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


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

要使此行按预期方式工作,请确保:

  1. 这是 <head> 之后的第一个元素
  2. 在meta标记之前没有使用条件注释,例如。 在 <html> 元素上

否则一些 IE 版本只是忽略它。

更新

这两个规则被简化了,但是它们很容易记住和验证。 尽管MSDN文档声明你可以在这个之前放置标题和其他元标记,但我不建议这样做。

如何使它与条件注释一起工作。

关于头部元素顺序的有趣文章。 (blogs.msdn.com, 用于 IE )

参考

MSDN文档列表中:

X-UA-Compatible [...] 必须出现在网页( 头部部分)的页眉中,除标题元素和其他元元素以外的所有其他元素。

如果在同一个网络中使用你的网站服务器 IE 喜欢 switch 到 compability模式尽管 doctype。
添加 meta http-equiv="X-UA-Compatible" content="IE=Edge"禁用这里不需要的行为。

...