有人可以简单解释一下IE8浏览器模式和文档模式之间的区别吗?
- 是什么导致浏览器模式改变?
是什么导致文档模式改变?
如果用户通过开发人员工具更改了模式,即使刷新页面也不会保留更改吗?
我之所以这样问是因为我们正在这里进行一些IE8测试,并且不同的人具有不同的模式组合,我想尝试弄清楚这是怎么发生的。
有人可以简单解释一下IE8浏览器模式和文档模式之间的区别吗?
是什么导致文档模式改变?
如果用户通过开发人员工具更改了模式,即使刷新页面也不会保留更改吗?
我之所以这样问是因为我们正在这里进行一些IE8测试,并且不同的人具有不同的模式组合,我想尝试弄清楚这是怎么发生的。
Answers:
摘自IE8博客上的这篇文章,标题为IE8如何确定文档模式
因此,我们将为您的问题提供以下答案:
问: 简单地说,浏览器模式和文档模式有什么区别?
答:在开发人员工具中设置了浏览器模式,以模仿不同的IE浏览器版本行为,同时在网页上定义了文档模式,以告诉IE为了兼容性目的以不同的方式呈现网站。
问: 是什么导致浏览器模式改变?
答:用户在开发工具中更改浏览器模式。
问: 是什么导致文档模式更改?
A. Web开发人员设置的Doctype和X-UA-Compatible元标记和标头。
问: 如果用户通过开发人员工具更改了模式,即使刷新页面也不会保留更改吗?
答:浏览器模式将保留,但是如果您更改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 ...)。此值还用于处理条件注释([如果是IE 9],[如果是gt 8],等等。)IE 11中的仿真工具不具有浏览器模式,而是具有用户代理下拉列表。
文档模式:指定用于处理标记的渲染引擎。通常,这是我们看到渲染问题和浏览器不兼容的地方。最初的目标(是好是坏)是网站所有者可以通过元标记为其网站选择文档模式。在IE 11中,仿真工具不那么令人困惑。
测试:如果你的目标是效仿老IE8浏览器,你应该改变这两个浏览器模式和文档模式。仿真不是完美的,因此一个更彻底的选择是从Microsoft下载免费的测试VM,您可以在其中使用IE 8、9等的“真实”版本进行测试。
是什么导致这些值发生变化?
浏览器模式不会改变。(除非您在Dev工具中对其进行了更改。)在向Web服务器发出请求之前将其设置。
可以根据Web服务器的响应来更改文档模式。可以通过与X-UA兼容的HTTP响应标头,文档类型,元标记,内联网站点,标记问题等进行更改。