为什么使用X-UA兼容IE = Edge?

我最近参加了几个在线课程,但我仍然看到一些教师默认将以下元标记添加到文档顶部:

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

这个想法似乎是,这和<meta charset="UTF-8">一样重要和有用。

但为什么?

根据微软的Modern.ie文档 ,这是“确保Internet Explorer使用最新引擎”的“最佳实践”。 好,可以。

但是,如果您遵循MSDN上的stream程图​​,则清楚地显示没有“X-UA-兼容”信息的文档被转发到用户的“兼容性视图”首选项, 如果没有设置,则只需遵循!DOCTYPE声明 。

换句话说,除非用户具有一些兼容性视图设置,否则IE只会遵循你的!DOCTYPE,并使用浏览器的最新标准模式进行渲染 ……不需要X-UA-Compatible IE=Edge语句在所有。

正如MSDN所说:“ 使用HTML5文档types声明来启用边缘模式 ”。

那么在什么情况下需要X-UA-Compatible IE=Edge

正如@David的答案所指出的,除非您在“本地Intranet”区域托pipe一个站点,否则几乎没有理由包含<meta http-equiv="X-UA-Compatible" content="IE=edge">在您的网页上,并且(根据微软的最佳实践build议 )完全没有理由将其包含在HTML中。 (你应该把它放在你的服务器configuration或站点标题中 – 而不是在HTML本身中。)

如果您正在考虑在项目中的任何位置使用X-UA-Compatible ,则应该记住兼容性视图仅影响IE8,9和10.它只在IE8中引入,并且在IE11中被禁用。

另外请注意,IE11是IE目前唯一官方支持的版本 。 所有旧版本都应该被认为是不安全的。

如果没有足够的理由说服你不要使用它,那么考虑到微软声称IE8及以上版本已经在<!DOCTYPE出现时自动在标准模式下呈现 ,这使得它变得毫无意义。

你可以看到IE自己决定使用什么文件模式的stream程:

在这里输入图像说明在这里输入图像说明

如您所见,如果不存在X-UA-Compatible元标记或HTTP标头,则会检查用户的“兼容性视图”设置。 如果用户没有为您的网站,IE然后检查存在一个<!DOCTYPE声明。 如果find它会自动使用最新的标准模式(又名“EmulateIEx”)。 如果没有,它会回到怪癖模式。

更多的理由你不应该使用“X-UA兼容”元标记:

  • 它无法validationHTMLvalidation
  • 它会导致IE停止并重新呈现您的页面
  • 它只是为解决问题时临时使用而devise的

来自微软的引用(重点是我的):

它减缓了初始页面渲染速度

当Internet Explorer遇到与X-UA兼容的META标记时,它将使用指定版本的引擎重新开始。 这是性能问题,因为浏览器必须停止并重新开始分析内容。

这只是为临时使用而devise的

X-UA兼容指令是允许应用程序在对应用程序进行更新时以最新的Internet Explorer版本工作的工具。

如果你绝对需要的话,有更好的方法来实现X-UA-Compatible …

最佳做法是使用X-UA兼容的HTTP头 。 将该指令添加到响应标头,告诉Internet Explorer在parsing内容开始之前使用什么引擎。 这必须在网站的服务器中进行configuration。

现在只有IE11 正式支持现代操作系统 …

从2016年1月12日起,仅支持操作系统的最新版本的Internet Explorer将获得技术支持和安全更新。 Internet Explorer 11Internet Explorer的最后一个版本,将继续在Windows 7,Windows 8.1和Windows 10上接收安全更新,兼容性修补程序和技术支持。

实际上,在您的HTML中包含X-UA-Compatible元标记的唯一原因是为您的网站覆盖用户的“兼容性视图”设置。 在几乎所有情况下,用户都不会改变这些设置(为什么他们?)。

总之:不要这样做。

如果用户正在浏览位于“本地Intranet”区域(如公司内部网)上的页面,默认情况下将打开“兼容性视图”。 这是当我使用“X-UA兼容”强制IE使用最新的引擎。

只要它被设置为“Edge”,它就会被validation为HTML5,而且我被告知它只会导致IE重新渲染页面,如果该网站已经在兼容模式下渲染的话。 不过,把它放在服务器configuration( .htaccess等)比input每个页面的HTML要好。

Henri Sivonen对浏览器如何select渲染模式做了非常有用的参考。 你可以在这里阅读: https : //hsivonen.fi/doctype/ 。