【问题标题】:IE8 browser mode vs document modeIE8 浏览器模式 vs 文档模式
【发布时间】:2011-02-26 09:27:38
【问题描述】:

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

  • 是什么导致浏览器模式发生变化?
  • 是什么导致文档模式发生变化?

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

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

【问题讨论】:

  • 所有这些文档模式的东西似乎一点意义都没有。例如,在开发工具中,我可以设置 IE9 的文档模式和 IE8 的浏览器模式。为什么不让我们只修改浏览器模式?
  • @AdrienBe 在这次体验之前,您是否发现 IE 中的很多东西都有意义?

标签: internet-explorer-8 ie8-browser-mode


【解决方案1】:

来自 IE8 博客上的this article,标题为IE8 如何确定文档模式

  1. 开发人员工具设置会覆盖选项卡中显示的页面的所有文档模式。
  2. X-UA-Compatible 元标记和标头会覆盖兼容性视图设置和文档类型,除非 X-UA-Compatible 值为 EmulateIE7 或 EmulateIE8。
  3. 用户的兼容性视图设置会覆盖 Microsoft 兼容性视图列表。
  4. 如果上述规则均不适用,则 doctype 将确定网页是否以 IE8 标准、IE8 几乎标准或 Quirks 模式呈现。

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

Q. 简单来说浏览器模式和文档模式有什么区别?
A.浏览器模式设置在开发者工具模拟不同的 IE 浏览器版本行为,同时在网页上定义文档模式以告诉 IE 以不同方式呈现网站以实现兼容性。

问。 是什么导致浏览器模式发生变化?
答。用户在开发工具中更改浏览器模式。

Q. 是什么导致文档模式发生变化?
A. Doctype 和 X-UA-Compatible 元标记和网页开发者设置的标题。

问。 如果用户通过开发者工具更改模式,即使页面被刷新,更改是否仍然存在?
答. 浏览器模式将保留,但如果您更改 Doctype 和 X-UA-Compatible,它们将返回到页面上定义的内容。

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

【讨论】:

  • 感谢您的总结。这是我第一次看到那个图表。难怪我觉得我可能错过了什么。
  • 不太确定这个答案是否正确,因为它说“在网页上定义了文档模式以告诉 IE 以不同方式呈现网站以实现兼容性目的”,当它也可以在开发人员工具中进行修改时(对于 IE9 和 IE10,这是肯定的)。
  • @AdrienBe 他们在 IE9 的开发工具中添加了更改文档模式的功能。 IE8(这是问题的主题)在开发工具中没有文档模式切换。话虽如此,我将在底部添加一个脚注,因为这个问题仍然从可能想知道 IE9+ 的人那里获得相当多的流量。
【解决方案2】:

左上角有一个小按钮,在 IE 开发工具 -> 仿真(选项卡)中显示“持久仿真设置”

this

"设置持久化和重置 一个 Persist Emulation 设置图标被添加到 Emulation 工具中。这将保持您当前的模拟设置,直到被特别禁用,允许您工作、关闭浏览器,并以完整的模拟设置返回。右侧是一个重置仿真设置图标,它可以快速将工具重置为默认值。"

【讨论】:

    【解决方案3】:

    浏览器模式:指定浏览器发送到 Web 服务器的用户代理。如果您的 JavaScript 或后端代码基于用户代理字符串呈现不同,则可能会出现呈现差异。例如,您可能会看到检查 navigator.userAgent 的 JavaScript。 (Mozilla/5.0(兼容;MSIE 8.0...)此值也用于处理conditional comments([if lte IE 9]、[if gt IE 8] 等)。IE 11 中的仿真工具确实没有浏览器模式。它有一个用户代理下拉菜单。

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

    测试: 如果您的目标是模拟旧的 IE8 浏览器,您应该更改 both 浏览器模式和文档模式。仿真并不完美,所以更彻底的选择是download free test VMs from Microsoft,您可以在其中使用“*真实”版本的 IE 8、9 等进行测试。

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

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

    文档模式可以根据网络服务器的响应而改变。它可以通过 X-UA 兼容的 HTTP 响应标头、文档类型、元标记、Intranet 站点、标记问题等进行更改。

    【讨论】:

      【解决方案4】:

      this page 中查看您的答案。

      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模式呈现页面!

      【讨论】:

      • 支持图表。否则很难弄清楚。
      猜你喜欢
      • 2011-02-05
      • 2012-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-13
      • 2012-08-24
      • 1970-01-01
      相关资源
      最近更新 更多