兼容性问题目前市面上流行的浏览器有多种,这些浏览器在处理一个相同的页面时,表现或行为有时会有差异。 这种差异可能很小,甚至不会被注意到;也可能很大,甚至造成在某个浏览器下无法正常浏览。 我们把引起这些差异的问题统称为“浏览器兼容性问题”。 浏览器的内核各品牌浏览器的内核是不同的,不同的内核处理同一段代码的时候思路不同。因此可以说,浏览器间内核的差异是产生兼容性问题的根本原因。 “内核”也称为“引擎”。常见的浏览器及其渲染引擎(又称排版引擎)、脚本引擎的列表1如下:
注:
浏览器的工作模式工作模式简介浏览器的工作模式常被称为“渲染模式”。实际上浏览器不同的工作模式不仅对渲染有影响,对代码的解析以及脚本的行为也同样有影响。 从更广泛的角度来看,浏览器的工作模式的差异不仅体现在处理 HTML 页面的时候,处理 XML 及一些非 WEB 内容时也有模式上的差异,但本文仅讨论浏览器在处理 HTML 页面时工作模式。1 注:
工作模式的来源及变迁微软于 2001 年 8 月 27 日发布的 IE6(Internet Explorer 6)增强了对 CSS1 的兼容1,这使得 IE6 对 CSS 的解析及渲染与它的前一个版本 IE5.5 有了很大的差别,如对盒模型的理解2、表格尺寸的算法3等。 为了保持良好的向后兼容性,微软为用户提供了一个“开关”,来决定浏览器的工作模式4,这个“开关”就是页面顶部的 DTD。 随着时间的推进和标准的进步,IE6、IE7 的“标准模式”逐渐已经变得不够标准了,2009年3月19日发布的 IE8 重新定义了“标准模式”,再次增强了对标准规范的支持,同时为了保持对 IE7 的兼容,IE8 增加了一种工作模式:“接近标准模式”。于是,IE8 的工作模式就分成了三种:“标准模式”、“接近标准模式”和“混杂模式”6。 目前所有主流浏览器对于向后兼容问题的处理都与 IE 系列一样,提供了不同的模式7来保证向后兼容。 浏览器的工作模式就是在这种背景下诞生的,它很好的解决了浏览器对标准支持上的不断增强及对一些错误的修复而导致的向后兼容问题,但也将浏览器在不同情况下的表现及行为变得更加复杂多样。 通过以上的内容,我们可以得出结论:如果一个页面能使各浏览器都工作在“标准模式”下,那么各浏览器都将尽量兼容标准,因此各浏览器之间表现出的差异是很少的。相反,如果一个页面使各浏览器都工作在“混杂模式”下,那么各浏览器都将尽量向后兼容,因此各浏览器之间表现出的差异将会最大化。 注:
建议在编写一个页面时,要使用可以触发各浏览器“标准模式”的DTD,并书写符合规范的代码,以保证您的页面在各浏览器中可以最大程度的兼容。 |
文明社会,从理性发言开始。谢绝地域攻击。