前端:兼容性问题与浏览器的内核及渲染模式

兼容性问题

目前市面上流行的浏览器有多种,这些浏览器在处理一个相同的页面时,表现或行为有时会有差异。这种差异可能很小,甚至不会被注意到;也可能很大,甚至造成在某个浏览器下无法正常浏览。我们把引起这些差异的问题统称为“浏览器兼容性问题”。

浏览器的内核

各品牌浏览器的内核是不同的,不同的内核处理同一段代码的时候思路不同。因此说,--浏览器间内核的差异是产生兼容性问题的根本问题--“内核”也称为“引擎”。常见的浏览器及其渲染引擎(又称排版引擎)、脚本引擎的列表如下:

前端:兼容性问题与浏览器的内核及渲染模式_第1张图片
关于浏览器内核的更多信息,请参考 维基百科 - 排版引擎 及 维基百科 - 网页浏览器比较 中的相关内容

浏览器工作模式

工作模式简介

浏览器的工作模式常被称为“渲染模式”。实际上浏览器不同的工作模式不仅对渲染有影响,对代码的解析以及脚本的行为也同样有影响。

从更广泛的角度来看,浏览器的工作模式的差异不仅体现在处理HTML页面的时候,处理XML及一些非WEB内容时也有模式上的差异。更多浏览器工作模式请关注Activating Browser Modes with Doctype

工作模式的来源及变迁

微软于2001年8月27日发布的IE6(Inrernet Explorer 6)增强了对CSS的兼容,这使得IE6对CSS的解析及渲染与它的前一个版本IE5.5有了很大的差别,如对盒模型的理解、表格尺寸的算法等。
为了保持良好的向后兼容性,微软为用户提供了一个“开关”,来决定浏览器的工作模式,这个“开关”就是页面顶端的DTD(Document Type Definition 全称为文档类型定义。主要是用来约束XML文件!详见DTD)。

某些DTD将使IE6工作在“标准兼容模式”(即“标准模式”),这种模式使用了IE6最新的处理方式,包括对CSS1的兼容及一些DHTML方面的增强。而另一些DTD,包括不设置DTD将使IE6工作在“向后兼容模式”(即“混乱模式”),这种模式对页面的处理是与IE5.5一致。这样可以保证对一些在IE5.5中表现良好的页面在IE6中也能达到同样的效果。
微软在后续推出的IE7和IE8中,也使用了上述“开关”,与IE6一样,在IE7,IE8的“混乱模式”下,对页面处理方式仍与IE5.5一致。因此可以说,IE系列的“混乱模式”,将浏览器的行为冻结在了IE5.5这个版本,虽然IE各版本的混乱模式也略有区别,但他们的本意都是向后兼容。
随着时间的推进和标准的进步,IE6、IE7的“标准模式”逐渐已经变得不候标准了,2009年3月19日发布IE8重新定义了“标准模式”,再次增强了对标准规范的支持,同时为了保持对IE7的兼容,IE8增加了一种工作模式:“接近标准模式”。于是,IE8的工作模式就分成了三种“标准模式”,“接近标准模式”,“混乱模式”。
目前所有主流浏览器对于向后兼容问题的处理都与IE系列一样提供了不同模式来保证向后兼容。
浏览器的工作模式就是在这种背景下诞生的,它很好的解决了浏览器对标准支持上的不断增强及对一些错误的修复修复而导致的向后兼容问题,但也将浏览器在不同情况下的表现及行为变得更加复杂多样。
通过以上的内容没我们可以得出结论:如果一个页面能使各浏览器都在“标准模式”下,那么各浏览器都尽量兼容标准,因此各浏览器之间表现出的差异是很少的。相反,如果一个页面使各浏览器都工作在“混乱模式”下,那么各浏览器都将尽量向后兼容,因此各浏览器之间表现出的差异将会最大化。

前端:兼容性问题与浏览器的内核及渲染模式_第2张图片
常见的doctype

你可能感兴趣的:(前端:兼容性问题与浏览器的内核及渲染模式)