IE8浏览器模式与文档模式

谁能简单解释一下 IE8浏览器模式文件模式之间的区别?

  • 什么导致浏览器模式改变?
  • 文档模式改变的原因是什么?

  • 如果用户通过开发人员工具更改模式,即使页面被刷新,更改是否仍然存在?

我问这个是因为我们正在做一些 IE8测试,不同的人有不同的模式组合,我想试着弄清楚这是如何发生的。

38415 次浏览

来自 IE8博客上的 这篇文章,标题为 IE8如何决定文档模式

  1. 开发人员工具设置覆盖选项卡中显示的页的所有文档模式。
  2. X-UA-Compatible 元标记,然后头部覆盖兼容性视图设置和 doctype,除非 X-UA-Compatible 值是 SimulateIE7或 SimulateIE8。
  3. 用户的兼容性视图设置覆盖 Microsoft 兼容性视图列表。
  4. 如果上述规则都不适用,doctype 将决定网页是以 IE8标准、 IE8几乎标准还是怪异模式呈现。

因此,我们从中得到以下问题的答案:

浏览器模式和文档模式简单来说有什么不同?
浏览器模式设置在开发工具中,用于模拟不同的 IE 浏览器版本行为,而文档模式则定义在网页上,用于告诉 IE 为了兼容性目的而呈现不同的站点。

是什么导致浏览器模式改变?
用户更改开发工具中的浏览器模式。

是什么导致文档模式改变?
Doctype 和 X-UA-Compatible 元标签以及 web 开发者设置的头部。

如果用户通过开发工具更改了模式,即使页面被刷新,这种更改是否仍然存在?
浏览器模式将保持不变,但是如果你改变 Doctype 和 X-UA-Compatible,它们将回到页面上定义的模式。

更新: 正如 Adrien Be 在下面指出的那样,IE9 + 增加了在开发工具中通过一个设置改变文档模式的能力,该设置将在刷新时保持不变。

这一页中看到你的答案。

documentMode属性返回浏览器用于呈现当前文档的模式。

IE8可以以不同的模式呈现页面,这取决于 !DOCTYPE或某些 HTML 元素的存在。

此属性返回下列值之一:

5 - The page is displayed in IE5 mode
7 - The page is displayed in IE7 mode
8 - The page is displayed in IE8 mode
9 - The page is displayed in IE9 mode

注意: 如果没有指定 !DOCTYPE,IE8将以 IE5模式呈现页面!

Diagram of the document mode selection process

Browser Mode : 指定由浏览器发送到 Web 服务器的 用户代理。如果 JavaScript 或后端代码根据用户代理字符串呈现不同的内容,则可能会出现呈现差异。例如,您可能会看到检查 navigator.userAgent的 JavaScript。(Mozilla/5.0(兼容; MSIE 8.0...)这个值也用于处理 有条件的注释([ if lte IE 9] ,[ if gt IE 8]等)。IE11中的仿真工具没有浏览器模式。相反,它有一个用户代理下拉列表。

Document Mode : 指定用于处理标记的呈现引擎。这通常是我们看到呈现问题和浏览器不兼容的地方。最初的目标(无论好坏)是网站所有者可以通过元标签为他们的网站选择一种文档模式。在 IE11中,仿真工具不那么令人困惑。

测试 : 如果您的目标是模拟一个旧的 IE8浏览器,您应该改变 都有浏览器模式和文档模式。模拟并不完美,所以一个更彻底的选择是到 从微软免费下载测试虚拟机,在那里您可以使用 IE8、9等的“真实”版本进行测试。

是什么导致这些值发生变化?

浏览器模式不会改变。(除非您在 Dev 工具中更改它。)它是在向 Web 服务器发出请求之前设置的。

文档模式可以根据 Web 服务器响应而改变。它可以通过 X-UA-Compatible HTTP 响应头、 doc 类型、 meta 标记、 Intranet 站点、标记问题等进行更改。

在左上角有一个小按钮,在 IE dev tools-> 仿真(tab)中,上面写着“持久化仿真设置”

参阅 这个:

”< em > 设置持久化和重置 将持久模拟设置图标添加到模拟工具中。这将保持您当前的模拟设置,直到特别禁用,允许您工作,关闭浏览器,并返回您的模拟设置完好无损。它的右侧是一个重置仿真设置图标,可以快速将工具重置回默认值。他说: 「