2.3 兼容性视图
兼容性视图是一种机制,用来显示为较早IE版本设计的网站,并不会妨碍对可互操作性Web标准的长期采用。简而言之,它使IE在没有“破坏Web”的情况下继续前进,IE团队就是这样声明的。兼容性视图建立在一些基本原则的基础之上:
● 默认情况下,所有网页都运行在IE 8标准模式中(“默认标准”)。
● 通过兼容性视图加载的页面运行在IE 7标准模式中。
● 当在兼容性视图中加载页面时,“用户代理”字符串和条件注释指出该浏览器是IE 7。
● 兼容性视图应用于整个域,包含子域在内。
除非页面通过X-UA-compatible <meta>标记或HTTP头,显式指定了其文档模式,否则,当以下条件之一为真时,网页将以“兼容性视图”显示:
● 它的域出现在用户的“兼容性视图”设置列表中(通过单击“兼容性视图”按钮添加,或者在“兼容性视图设置”中人工插入)。
● 它的域出现在“兼容性视图组策略”键中。
● 它的域出现在微软兼容性视图列表中。
● 它的域处于Intranet区域中,并且为所有intranet站点启用了兼容性视图。
● 对所有网站打开了兼容性视图。
2.3.1 微软兼容性视图列表
在IE 8发布时,很多常用网站在IE 8标准模式下运行时都会中断显示。微软认为,一旦用户在自己的系统中安装了IE 8,这种情况就会妨碍用户的日常浏览。于是就创建了“微软兼容性视图列表”来缓解这一情况;这个列表中包含了一些流行网站的域,这些网站更适于在IE 7兼容模式性运行。这个列表中的所有域都将被加载到“兼容性视图”中,直到网站的主人采取措施,确保它与IE 8保持兼容,以及(或者)请求迁移为止。
微软最早是在IE 8候选版期间向用户发布的“兼容性视图列表”。这个列表是使用Windows Update发送的,可以通过微软下载中心独立下载。希望下载这个列表的用户必须选择接收并安装它。开发人员不应当依赖于用户来完成这一工作,因为并不是所有用户都安装了这个列表。
这个列表本身是实现了ie8compatlistdescription命名空间的XML文档。这个列表中的域被保存为<domain>标记中的字符串。这个XML文档包含在IE资源库中(res://iecompat.dll/ iecompatdata.xml)(见代码清单2-6)。
代码清单2-6 从兼容性列表中选择域(截至2009年10月)
<?xml version="1.0" encoding="utf-8" ?>
<ie8compatlistdescription
xmlns="http://www.microsoft.com/schemas/ie8compatlistdescription/1.0">
...
<domain>americanexpress.com</domain>
<domain>americangreetings.com</domain>
<domain>amtrak.com</domain>
...
</ie8compatlistdescription>
2.3.2 控制兼容性设置
用户和开发人员可以通过大量的公开入口点来控制以兼容性视图显示的域。通过“兼容性视图”按钮来启用这一功能是最方便的,当这一功能可供使用时,将在地址栏中显示这一切换按钮(见图2-2)。通过单击这一按钮,可以为任何一个域来开启和关闭兼容性视图;这一切换事件将会对域进行刷新,以显示为期望状态。