IE8浏览器如何确定文档模式

10-10

本文将讨论IE8浏览器如何确定用以渲染网站的文档模式,如怪异模式(又称IE5模式)和标准模式(更多资料,英文:http://en.wikipedia.org/wiki/Quirks_mode)。该内容对于开发人员和客户来说,是很重要的。

与此相关的,是我们最近更新的兼容性视图列表。此列表内容自从去年3月IE8正式版发布以来,已经减少了1000多个网站。从最初的3100多,减少到了现在的2000多一点。在与网站开发人员及标准制定人员的共同努力下,我们很高兴地看到需要出现在兼容性视图(CV)列表中的网站不断地在减少。
数据驱动的设计
在讨论设计细节之前,我想和大家分享一些我们用于设计兼容性体验的数据。

让我们来看一下世界范围内的上千个高流量网站,如qq.com和netlog.com,以及那些最初列入兼容性视图列表中(英文资料:兼容性视图列表)的网站的doctype(wikipedia英文资料,百度百科,CSDN社区)和X-UA-Compatible meta标签和头部:

26%的网站指定使用怪异模式,如果amazon.com,tworld.co.kr和unibanco.com.br。
41%的网站使用了Transitional文档类型,即准标准模式(mozilla英文资料)。
14%的网站已经添加了X-UA-Compatible meta标签或HTTP响应头,从而使用IE7标准模式进行渲染。

以上的数据是可以理解的:许多高流量网站需要在尽可能多的浏览器中渲染,这就是为什么他们会使用怪异模式。许多网站有专门针对IE7的页面而且许多网站创作工具,如Aptana Studio(英文网站)和Expression Web,则默认指定使用Transitional文档类型:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

如果考虑一下网络的规模,那么将有几十亿的网页,分别指定使用怪异模式,IE7,准标准模式,或最新的标准模式。IE需要支持所有这些网站以确保世界范围内的用户拥有最好的体验。
有这些数据在手,我们设计IE8时考虑到了以下一些原则:

默认情况下,使用最标准的方式渲染网页。 如此前(IEblog英文,未翻译)的帖子(IEBlog英文,未翻译)所明确的,我们致力于互操作性,这便意味着默认情况下,使用最标准的方式渲染网页。
用户只是期待网页在IE中正常工作。 一小部分用户将需要改进那些在IE7标准模式中工作得最好的网站,以便使其可以工作在IE8的最标准的默认模式中。至于其他所有人,IE8提供了兼容性视图设置(IEBlog英文,未翻译)。
在这里,最好的用户体验是一切自动地如网站设计者希望的那样工作。这就是为什么我们提供了兼容性视图列表(MSDN英文资料)。与此同样重要的是,用户可以通过兼容性视图按钮,修复那些尚未加入列表中网站。
网站开发者完全掌控他们的内容如何被渲染。 X-UA-Compatible meta标签和头部会覆盖IE和用户的设置。他们也使网站开发者可以细粒度地调控如何在IE中渲染每一个网页。
比如,有些网站拥有一些专门为怪异模式写的网页,而另一些则为IE7标准模式。当IE收到的X-UA-Compatible头的值为EmulateIE7时,便会相应地以怪异模式或IE7标准模式进行渲染。
给网站开发者以工具和时间,帮助他们转换到IE8标准模式。 IE8引入了X-UA-Compatible meta标签和头部,这便给网站开发者提供了时间以转换到IE8标准模式。正如上文提到的,许多网站已经使用了这些机制来指定他们的内容必须使用IE7标准模式。

IE8如何确定文档模式的图解

IE8浏览器如何确定文档模式

给定了以上的原则,这里有四条规则明确了IE如何处理文档类型(doctype),X-UA-Compatible meta标签和头部,开发人员工具,以及兼容性视图设置。这些标准自上而下出现在下面的图解中。

开发人员工具的设置会覆盖一个标签(tab)中所显示的页面的全部文档模式。
X-UA-Compatible meta标签及此后的头部,覆盖兼容性视图设置和文档类型(doctype),除非X-UA-Compatible的值是EmulateIE7或EmulateIE8。
用户的兼容性视图设置(IEBlog英文,未翻译)会覆盖微软兼容性视图列表(MSDN英文资料)。
如果没有上述规则中的任何一种可以适用,则有文档类型(doctype)将决定网页使用以下哪一种模式进行渲染:IE8标准模式,IE8准标准模式,或怪异模式。

兼容性和互操作性是很复杂的。为了降低开发人员和用户使用的复杂度,我们希望看到更多的网站淘汰旧式的浏览器模式。我们也尊重网站开发人员对模式的选择。我们很高兴和网站所有者及标准组织成员继续(IEBlog英文,未翻译)提高(IEBlog英文,未翻译)IE的(IEBlog英文,未翻译)互操作性标准的实现。