如果未指定 Internet Explorer 兼容性视图会发生啥

Posted

技术标签:

【中文标题】如果未指定 Internet Explorer 兼容性视图会发生啥【英文标题】:What happens if Internet Explorer compatibility view not specified如果未指定 Internet Explorer 兼容性视图会发生什么 【发布时间】:2019-03-29 01:06:38 【问题描述】:

在研究 Internet Explorer 的兼容性视图时, 我读过没有必要放

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

html 文档中,除非它用于“本地 Intranet”。 根据我看过的文章,

如果文档中没有 X-UA-Compatible 元标记,浏览器会检查用户的兼容性视图设置。如果用户没有在视图列表中指定某个网站,浏览器会检查是否存在 &lt;!DOCTYPE 声明,如果存在,它会自动呈现为最新的标准模式,否则呈现为 Quirks 模式。

如果是这样的话,我想知道在下面这些情况下会发生什么,

    如果用户的浏览器非常旧(例如 IE 6 或 7)并且没有指定兼容性元标记。如果存在 DOCTYPE,它会呈现为最新的标准模式吗?那么浏览器如何处理最新的功能和 CSS 等呢?

    我也读过 Quirk Mode,但 Quirk Mode 到底是什么?它如何影响渲染?

    如果在文档中指定了&lt;meta http-equiv="X-UA-Compatible" content="IE=7"&gt;,即使浏览器是最新的,它是否会为所有浏览器呈现为IE7?

【问题讨论】:

没有办法神奇地让旧版本的 IE 使用更新的功能。 【参考方案1】:

    如果用户的浏览器非常旧(例如 IE 6 或 7)并且没有指定兼容性元标记。如果存在 DOCTYPE,它会呈现为最新的标准模式吗?那么浏览器如何处理最新的功能和 CSS 等呢?

    是的,前提是 DOCTYPE 是触发标准模式的一种,例如一个用于包含所有必要位(公共标识符、系统标识符等)的严格 DTD。标准模式在 Internet Explorer 6 及更高版本中可用。

    它会尽其所能处理它所理解的一切。

    我也读过 Quirk Mode,但 Quirk Mode 到底是什么?对渲染有什么影响?

    这太宽泛了,无法深入回答,但请参阅http://jkorpela.fi/quirks-mode.html。简而言之,怪癖模式是一种兼容模式,专为非常陈旧(想想 20 岁)和/或非常破旧的网站而设计。

    如果在文档中指定了&lt;meta http-equiv="X-UA-Compatible" content="IE=7"&gt;,它是否会为所有浏览器呈现为IE7,即使浏览器是最新的?

    是的,直到并包括 Internet Explorer 11。

Despite the word "edge",X-UA-Compatible 标头和元标记与 Microsoft Edge 完全无关,因此本主题中的任何内容都不适用于该浏览器:

不熟悉 X-UA-Compatible 并在今天阅读本文的开发人员可能会对“边缘”一词的使用感到困惑 — X-UA-Compatible 标头是在 IE8 中引入的,它至少比 IE8 早 6 年。新的 Windows 10 浏览器 Microsoft Edge,在这种情况下,“edge”指的是“IE 渲染引擎的最新‘尖端’版本”。它与 Microsoft Edge 完全无关,并且由于显而易见的原因,您实际上不能告诉 IE 以 Microsoft Edge 呈现。

【讨论】:

以上是关于如果未指定 Internet Explorer 兼容性视图会发生啥的主要内容,如果未能解决你的问题,请参考以下文章

Internet Explorer 未加载 js 文件

在 Internet Explorer 中未定义 constructor.name

Internet Explorer 11 中的“未处理的承诺拒绝 TypeMismatchError”

WordPress 插件内容未在 Internet Explorer 中显示

为啥在 Internet Explorer 中未收到 POST 响应数据?

Dojo 工具提示未显示在 Internet Explorer 中