有人可以简单解释一下IE8浏览器模式和文档模式之间的区别吗?
- 是什么导致浏览器模式发生变化?
是什么导致文档模式发生变化?
如果用户通过开发人员工具更改模式,即使页面被刷新,更改是否仍然存在?
我问这个是因为我们在这里做一些 IE8 测试,不同的人有不同的模式组合,我想弄清楚这是怎么发生的。
有人可以简单解释一下IE8浏览器模式和文档模式之间的区别吗?
是什么导致文档模式发生变化?
如果用户通过开发人员工具更改模式,即使页面被刷新,更改是否仍然存在?
我问这个是因为我们在这里做一些 IE8 测试,不同的人有不同的模式组合,我想弄清楚这是怎么发生的。
来自IE8 博客上的这篇文章,标题为IE8 如何确定文档模式
因此,我们得到以下问题的答案:
Q. 简单来说浏览器模式和文档模式有什么区别?
A.在开发者工具中设置浏览器模式以模拟不同的 IE 浏览器版本行为,而在网页上定义文档模式以告诉 IE 以不同方式呈现网站以实现兼容性目的。
Q. 是什么导致浏览器模式改变?
A.用户在开发工具中更改浏览器模式。
Q. 是什么导致文档模式改变?
A. Web 开发人员设置的 Doctype 和 X-UA-Compatible 元标记和标头。
Q. 如果用户通过开发者工具更改模式,即使页面被刷新,更改是否仍然存在?
A. Browser Mode 将保留,但如果您更改 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 模式呈现页面!
浏览器模式:指定浏览器发送到 Web 服务器的用户代理。如果您的 JavaScript 或后端代码基于用户代理字符串呈现不同,则可能会出现呈现差异。例如,您可能会看到 JavaScript 会检查navigator.userAgent
. (Mozilla/5.0(兼容;MSIE 8.0...)该值还用于处理条件注释([if lte IE 9]、[if gt IE 8] 等)。IE 11 中的仿真工具不有一个浏览器模式。它有一个用户代理下拉菜单。
文档模式:指定用于处理标记的呈现引擎。这通常是我们看到渲染问题和浏览器不兼容的地方。最初的目标(无论好坏)是网站所有者可以通过元标记为他们的网站选择一种文档模式。在 IE 11 中,仿真工具不那么令人困惑。
测试:如果您的目标是模拟旧的 IE8 浏览器,您应该同时更改浏览器模式和文档模式。仿真并不完美,因此更彻底的选择是从 Microsoft 下载免费的测试虚拟机,您可以在其中使用“真实”版本的 IE 8、9 等进行测试。
是什么导致这些值发生变化?
浏览器模式不会改变。(除非您在开发工具中更改它。)它是在向 Web 服务器发出请求之前设置的。
文档模式可以根据 Web 服务器响应而改变。它可以通过 X-UA 兼容的 HTTP 响应标头、文档类型、元标记、Intranet 站点、标记问题等进行更改。
左上角有一个小按钮,在 IE dev tools -> emulation (tab) 中显示“Persist emulation settings”
看到这个:
"设置持久性和重置 一个 Persist Emulation 设置图标被添加到 Emulation 工具中。这将保持您当前的仿真设置,直到被明确禁用,允许您工作、关闭浏览器并返回完整的仿真设置。在它的右边是重置仿真设置图标,可快速将工具重置为默认值。 "