110

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

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

人们的想法似乎是,这与<meta charset="UTF-8">.

但为什么?

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

但是,如果您按照MSDN 上的流程图​​,它清楚地表明没有X-UA-Compatible信息的文档被转发到用户的“兼容性视图”首选项,如果没有设置那么只需遵循 !DOCTYPE 声明

换句话说,除非用户有一些兼容性视图设置,否则IE 将只遵循您的 !DOCTYPE 并使用浏览器的最新标准模式进行渲染......根本不需要X-UA-Compatible IE=Edge声明。

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

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

4

3 回答 3

171

正如@David 的回答所指出的,除非您在“本地 Intranet”区域中托管网站,否则几乎没有理由将其包含<meta http-equiv="X-UA-Compatible" content="IE=edge">在您的网页中,并且(根据Microsoft 的最佳实践建议)绝对没有理由将其包含在HTML。(你应该把它放在你的服务器配置或站点标题中——而不是放在 HTML 本身中。)

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

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

如果这还不足以说服您不使用它,请考虑 Microsoft 声明IE8 及更高版本在存在 a 时已经自动以标准模式<!DOCTYPE呈现,这使得它更加毫无意义。

您可以自己查看 IE 决定使用哪种文档模式的流程:

在此处输入图像描述 在此处输入图像描述

如您所见,如果不存在X-UA-Compatible元标记或 HTTP 标头,它会检查用户的“兼容性视图”设置。如果用户没有您的网站,IE 会检查是否存在<!DOCTYPE声明。如果找到它,它会自动使用最新的标准模式(又名“EmulateIEx”)。如果没有,它会恢复到 Quirks 模式。

您不应该使用 Microsoft 自己的“X-UA-Compatible”元标记的更多原因(强调我的):

当 Internet Explorer 遇到 X-UA-Compatible META 标签时,它会使用指定版本的引擎重新开始。这是一个性能损失,因为浏览器必须停止并重新开始分析内容。

换句话说,它减慢了初始页面渲染

X-UA-Compatible 指令是一种工具,允许应用程序在对应用程序进行更新时在最新的 Internet Explorer 版本中运行。

它只是为临时使用而设计的。

最佳实践是 X-UA-Compatible HTTP Header。将指令添加到响应标头会告诉 Internet Explorer 在开始解析内容之前要使用什么引擎。这必须在网站的服务器中进行配置。

换句话说,如果您绝对需要,有更好的方法来实现 X-UA-Compatible 。

从 2016 年 1 月 12 日起,只有适用于受支持操作系统的最新 Internet Explorer 版本才能获得技术支持和安全更新。Internet Explorer 11是 Internet Explorer 的最后一个版本,将继续接收Windows 7、Windows 8.1 和 Windows 10的安全更新、兼容性修复和技术支持。

IE11 是唯一官方支持的 IE 版本

在您的 HTML 中包含元标记的唯一原因是X-UA-Compatible在您网站的 IE8、9 和 10 中覆盖用户的“兼容性视图”设置。在几乎所有情况下,用户都不会更改这些设置(为什么会这样?),现在甚至不再支持这些浏览器。

简而言之:这个标签已经过时了。

于 2014-10-13T20:40:01.243 回答
20

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

于 2014-10-13T19:01:58.093 回答
1

只要将它设置为“Edge”,它就会验证为 HTML5,并且我被告知它只会导致 IE 重新呈现页面,如果该站点已经在兼容模式下呈现它。尽管如此,将其放入服务器配置(.htaccess等)比放入每个页面的 HTML 更好。

于 2015-08-24T21:35:18.350 回答