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


95

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

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

这种想法似乎与<meta charset="UTF-8">

但为什么?

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

但是,如果按照流程图MSDN上它清楚地表明,没有一个文件`X-UA兼容的信息被转发到用户的“兼容性视图”喜好,如果多数民众赞成不设置,那么只需按照!DOCTYPE声明

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

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

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

Answers:


152

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

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

另请注意,IE11是当前唯一受IE正式支持的版本。所有旧版本均应视为不安全。

如果没有足够的理由说服你不使用它,认为微软状态IE8及以上的已经自动在标准模式渲染时<!DOCTYPE存在,这使得更加没有意义。

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

在此处输入图片说明 在此处输入图片说明

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

为什么您不应该使用Microsoft本身的“ X-UA兼容”元标记的更多原因(强调我的意思):

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

换句话说,它会减慢初始页面的渲染速度

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

它仅设计用于临时使用。

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

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

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

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

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

简而言之:这个标签已经诞生了。


17
这些流程图很棒。
bennettp123 2014年

9
请注意,截至今天(2015年10月16日),确实是IE11中的compat按钮已消失,但仍可以在“设置”菜单中启用它,因此它仍然存在。我们之所以今天使用它,是因为我们的基于Web的软件用于公司内部网,而这些公司的内部网具有要求兼容模式才能运行的旧系统,因此我们必须解决这一问题。不过,HTTP头上的技巧非常棒,谢谢!
道格·约翰逊

1
由于仍可以在IE11中启用兼容性视图,而公司客户端正在这样做,因此标头/标记仍然有用。我可以看到为什么HTTP标头更优越,但是如果标记位于DOM的最开始,则危害不大,而且仅适用于未在Edge模式下启动的浏览器。作为仅针对偶尔停留在兼容性视图中的用户的规定,我认为使用标签(在<head>顶部)并不是不好的做法。
汤姆·布泰尔

2
@ChuckLeButt或者他们的管理员已经通过组策略为他们“完成”了任务。在企业环境中仍然是一件非常重要的事情,这是我们有办法超越它的最大胜利。
汤姆·布特尔

2
@ChuckLeButt我明白您的意思了,没有Windows-fu来矛盾...但是,我们的客户告诉我们,他们的IE11都是兼容模式。他们如何得到它的确没有与我们分享知识。实际上,他们可能一直把它放在明确的清单上。
汤姆·布特尔

18

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


是的,这似乎是一种有效的用法,但是在这种情况下,您可能希望将其放入服务器配置或网站的标题中?stackoverflow.com/a/9338959/199700
Chuck Le Butt 2014年

1
也有部分更改是由于Microsoft稍微淘汰了Compatibility View。除了本地Intranet之外,如果一个域上有很多子域和应用程序,则为子域添加“兼容性视图”现在会将其应用于ENTIRE域(之前仅应用于特定的子域)。因此,即使您只有一个可能需要的应用程序,也应该对所有其他应用程序执行此操作,以避免出现支持问题。
基尔肯尼2015年

@ChuckLeButt,只要您在网络上,标题就很好,但是如果用户选择将页面保存在本地,则剩下的就是嵌入式<meta>标签。这就是为什么将重要标头也复制为<meta>标记通常是一个好习惯的原因。
ravilov

1

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.