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

Chu*_*utt 83 internet-explorer x-ua-compatible

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

<meta http-equiv="X-UA-Compatible" content="IE=edge">
Run Code Online (Sandbox Code Playgroud)

思考似乎是这同样重要和有用<meta charset="UTF-8">.

但为什么?

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

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

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

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

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

Chu*_*utt 140

正如@ 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及更高版本已经在标准模式下自动呈现,当<!DOCTYPE它存在时,使其更加毫无意义.

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

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

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

更多原因是你不应该使用微软自己的"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中包含元标记的唯一原因是为您的网站覆盖用户在IE8,9和10中的"兼容性视图"设置.几乎在所有情况下,用户都不会更改这些设置(为什么会这样?),现在甚至不再支持这些浏览器了.

简而言之:这个标签已经有了它的一天.

  • 那些流程图太棒了. (17认同)
  • 只是一个注释,截至今天(2015年10月16日),IE11中的compat按钮消失了,但它仍然可以在"设置"菜单中启用,因此它仍然存在.我们今天使用它是因为我们的基于Web的软件用于企业内部网,这些内部网具有需要compat模式工作的遗留系统,因此我们必须解决这个问题.不过,在HTTP标题上有很棒的提示,谢谢! (7认同)
  • Visual Studio Code 的感叹号 (`!`) Emmet 缩写也将粘贴 `X-UA-Compatible` 元标记。在空 HTML 文档中键入“!”和“tap”。就像汤里的头发一样。 (4认同)
  • @ChuckLeButt 或者他们的管理员已经通过组策略“为”他们完成了这项工作。在公司环境中仍然非常重要,这是我们有办法覆盖它的最大胜利。 (2认同)
  • @ChuckLeButt 我明白你的意思,并没有用 windows-fu 来反驳它……然而,我们的客户告诉我们,他们全面使用兼容模式的 IE11;他们是如何得到它的,并没有真正与我们分享知识。有可能他们实际上一直将它列在一个明确的列表中。 (2认同)
  • Emmet 毫无理由地包含“X-UA-Compatible”。我必须在“!”片段上添加一个覆盖,以便让学生使用它来实现最佳实践。 (2认同)

Dav*_*vid 18

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

  • 还有一个变化部分是由于 Microsoft 稍微弃用了兼容性视图。除了本地 Intranet 之外,如果一个域上有很多子域和应用程序,则为子域添加兼容性视图现在将其应用于整个域(之前它仅应用于特定的子域)。因此,即使您只有一个可能需要它的应用程序,您也应该为所有其他应用程序执行此操作,以避免出现支持问题。 (2认同)