2.2 文档模式与版本控制
并不是所有网页都是为最新Web标准设计的,有很多网页实现了IE特有的功能,由于IE 8向互操作性方向的迁移,这些功能可能会被破坏。本节介绍兼容性功能,利用这些兼容性功能,Web应用程序可以继续使用早期IE版本中提供的功能,为这些应用程序的开发人员提供一个缓冲期,在自己合适的时间内将这些应用程序迁移到符合标准的实现方式。
2.2.1 Quirks模式、文档模式和X-UA-Compatible
自从出现浏览器和Web标准本身以来,各个Web浏览器版本之间的标记解释方法就在发生变化。在IE 4与Netscape 4之间发生第一次浏览器战争之后,给新浏览器们留下了一个烂摊子:它们要处理的网页中对什么是标记和样式给出了各种不同解释(之所以会存在这种情况,是因为在20世纪90年代末期,各种浏览器的实现方式之间存在冲突)。没有一种方法能够判断一个网页正在做什么,也无从知道它为什么要这样做,而由于现有网页都严重依赖于旧网页的行为,所以更加现代化的标准也胎死腹中。最终,人们创建了DOCTYPE标头,使Web开发人员能够“告诉”浏览器,这些网页最初是为哪种标准和实现方式创建的。
这只是一种临时解决办法。在20世纪中期,发生了3个重要事件:被广泛采用的Web浏览器数目大幅增加,开发人员开始构建更复杂的Web应用程序,浏览器供应商之间的互操作性和标准化工作得到了推进。新发展起来的浏览器,例如Safari和Firefox,因为其面世相对较晚,所以更严格地遵守了较新标准;而另一方面,IE则落后,支持那些依赖于较旧标准的旧应用程序和企业应用程序。IE 8是这个浏览器第一次尝试跟上这些较新标准的步伐,但是就像20世纪90年代一样,再次出现了如何处理旧网页这一问题。
IE 8添加了“文档模式”作为第二指令集,开发人员可以利用这些指令来告诉IE如何处理旧网页。它们可以通过X-UA-Compatible HTTP响应头或者相应的<meta>标记来规定。在默认情况下不会采用DOCTYPE,但开发人员也可以选择使用这一较早的版本控制模型。
2.2.2 文档模式
文档模式是一些指令,告诉IE应当应用哪些原有兼容性措施(如果有的话)。由于从IE 6开始,IE的页面显示和标准支持程度方面发生了功能性变化,所以很多应用程序都是针对较早版本而不是Web标准编写的。尽管在IE 8及更高版本中,以“默认打开”标准模式呈现,但IE提供了大量可供页面选择的模式,从而使得这些页面的分析和显示方式与其设计目的一致。
IE 8包含了对大量文档模式的支持,这些模式中就包括Quirks模式(其行为类似于IE 5)。这些模式希望能够模拟所面向的IE版本,而且每种模式对DOCTYPE的支持程度各有不同(见表2-3)。
表2-3 IE 8中可以使用的文档模式
总是选择一个IE版本中最新的标准解释(例如,在IE 9上选择IE 9标准模式)
与每种文档模式相关联的头值供网页用于定位一个特定的文档模式。在以下各节将讨论如何使用这些值。