`
nnwq
  • 浏览: 209212 次
社区版块
存档分类
最新评论

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

 
阅读更多
 

兼容性问题

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

浏览器的内核

各品牌浏览器的内核是不同的,不同的内核处理同一段代码的时候思路不同。因此可以说,浏览器间内核的差异是产生兼容性问题的根本原因。

“内核”也称为“引擎”。常见的浏览器及其渲染引擎(又称排版引擎)、脚本引擎的列表如下:

 

Browser Name Layout Engine ECMAScript Engine
Internet Explorer 6 - 8 Trident JScript
Firefox 3.5 Gecko TraceMonkey
Chrome 4 WebKit V8
Safari 4 WebKit SquirrelFish Extreme
Opera 10 Presto Carakan

 

注:关于浏览器内核的更多信息,请参考 维基百科 - 排版引擎维基百科 - 网页浏览器比较 中的相关内容。

浏览器的工作模式

工作模式简介

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

从更广泛的角度来看,浏览器的工作模式的差异不仅体现在处理 HTML 页面的时候,处理 XML 及一些非 WEB 内容时也有模式上的差异,但本文仅讨论浏览器在处理 HTML 页面时工作模式。

注:关于浏览器的工作模式的更多信息,请参考 Activating Browser Modes with Doctype

工作模式的来源及变迁

微软于 2001 年 8 月 27 日发布的 IE6(Internet Explorer 6)增强了对 CSS1 的兼容,这使得 IE6 对 CSS 的解析及渲染与它的前一个版本 IE5.5 有了很大的差别,如对盒模型的理解、表格尺寸的算法等。

为了保持良好的向后兼容性,微软为用户提供了一个“开关”,来决定浏览器的工作模式,这个“开关”就是页面顶部的 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 系列一样,提供了不同的模式来保证向后兼容。

浏览器的工作模式就是在这种背景下诞生的,它很好的解决了浏览器对标准支持上的不断增强及对一些错误的修复而导致的向后兼容问题,但也将浏览器在不同情况下的表现及行为变得更加复杂多样。

通过以上的内容,我们可以得出结论:如果一个页面能使各浏览器都工作在“标准模式”下,那么各浏览器都将尽量兼容标准,因此各浏览器之间表现出的差异是很少的。相反,如果一个页面使各浏览器都工作在“混杂模式”下,那么各浏览器都将尽量向后兼容,因此各浏览器之间表现出的差异将会最大化。

注:

  1. 关于 IE6 的更多信息,请参考 维基百科 - Internet Explorer 6
  2. 关于此问题,请参考 W3H - RD8001: 各浏览器中 'width' 和 'height' 在某些元素上的作用位置有差异
  3. 关于此问题,请参考 W3H - RE8017: IE Firefox Opera 的混杂模式对于 TD 元素的百分比高度计算错误
  4. 关于 IE6 对浏览器工作模式的区分的详细信息,请参考 MSDN - CSS Enhancements in Internet Explorer 6
  5. 比如 IE6 的混杂模式有著名的“双边距 Bug”,而 IE7 和 IE8 的混杂模式则没有这个问题。
    关于此问题,请参考 W3H - RX2001: IE5.0 IE5.5 IE6 中浮动元素在某些情况下会有双倍外边距
  6. document.compatMode 最先出现在 IE6 中,它的值标示了浏览器的工作模式,“标准模式”返回“CSS1Compat”,“混杂模式”返回“BackCompat”。这一做法到目前为止仍被所有主流浏览器所采用。
    需要注意的是:在后来出现的“接近标准模式”中,document.compatMode 的返回值与“标准模式”一致,为“CSS1Compat”。也就是说,不能通过 document.compatMode 来详细区分浏览器的工作模式,只能用来判断浏览器是否工作在“混杂模式”下。
    因为“标准模式”与“接近标准模式”之间的差异并不大,所以这个方法至今仍被广泛使用。
  7. 关于 Firefox 中 DTD 与浏览器工作模式的详细信息,请参考 Mozilla's DOCTYPE sniffing,关于 Opera 中 DTD 与浏览器工作模式的详细信息,请参考 DOCTYPE Switches support in Opera Presto 2.6

http://www.cnblogs.com/lhb25/archive/2010/09/18/1829849.html

6
0
分享到:
评论

相关推荐

    解决360双核浏览器兼容模式的页面显示问题

    在360浏览器中,对于需要使用IE内核进行渲染的网站,可能存在兼容性问题,尤其是当页面中需要执行JavaScript代码时。如上述内容提到的例子,JavaScript代码必须写在标签内部,否则可能无法正确执行。因此,在开发...

    常见浏览器兼容性问题汇总

    【浏览器兼容性问题】是IT领域中一个长期存在的挑战,特别是在网页开发中。浏览器兼容性问题主要源于不同浏览器对Web标准的实现不一致,尤其是在早期Web发展的阶段,各大浏览器厂商如Internet Explorer、Firefox、...

    浏览器兼容性问题

    首先,我们要明白,浏览器兼容性问题主要分为三类:渲染相关问题,涉及到CSS样式和布局效果;脚本相关问题,主要涉及JavaScript、DOM和BOM的操作;以及其他类别问题,包括浏览器本身提供的功能不兼容。 渲染相关...

    浏览器兼容性设置级解释

    **CSS Hack** 是解决浏览器兼容性问题的一种常见手段,由于不同浏览器对CSS语法的支持程度不同,开发者可以通过特定的语法结构让样式只在特定浏览器生效。例如,IE6识别下划线`_`和星号`*`前缀,IE7仅识别星号`*`,...

    腾讯X5内核浏览器类库_浏览器_x5内核_e4a类库_x5内核_E4A_

    这款类库以其高效、稳定和兼容性良好而受到开发者的广泛欢迎。 X5内核源于腾讯QQ浏览器,它是一个基于WebKit开源项目构建的浏览器引擎。WebKit是一种流行且强大的渲染引擎,被许多知名浏览器所采用,如Safari和早期...

    浏览器兼容测试工具

    首先,我们要理解浏览器兼容性问题的来源。不同的浏览器(如Chrome、Firefox、Safari、Edge和Internet Explorer)有着各自内核和渲染引擎,它们对HTML、CSS和JavaScript的支持程度不尽相同。例如,某些CSS3属性在旧...

    浏览器兼容报告

    这些浏览器基于不同的内核,对网页解析和渲染的方式各有差异,从而可能导致兼容性问题。 1. **Trident内核**:主要由微软的Internet Explorer使用,包括一些基于IE内核的第三方浏览器如GreenBrowser和Maxthon。...

    浏览器兼容.doc-CSS hack姐姐兼容性问题

    浏览器兼容性问题一直是Web开发中的一个关键挑战,尤其是在CSS样式表现方面。由于不同的浏览器使用了不同的渲染引擎(或称为内核),例如Mozilla Firefox使用Gecko,Internet Explorer使用Trident,Opera使用Presto...

    css 浏览器兼容性速查

    首先,我们要理解浏览器兼容性问题的来源。主要的浏览器有Chrome、Firefox、Safari、Edge以及Internet Explorer(IE),它们各自有自己的内核和渲染机制,对新特性的支持时间不同,有时甚至存在不完全支持或错误实现...

    多浏览器兼容分析

    然而,这也带来了新的挑战——不同的浏览器对同一网页的呈现可能产生差异,这就是所谓的“浏览器兼容性问题”。 #### 二、浏览器兼容性问题分类 浏览器兼容性问题大致可归类为三类: 1. **渲染相关**:涉及样式和...

    浏览器兼容性测试

    进行浏览器兼容性测试时,开发者和测试人员需要在上述及其它次要浏览器上检查网页的显示效果、功能执行情况以及性能。这通常包括但不限于以下步骤: - 使用多种浏览器打开网页,观察布局是否一致。 - 检查CSS样式和...

    解决浏览器兼容

    首先,我们要明白浏览器兼容性问题的根源在于各浏览器所使用的内核不同,常见的有以下几类: 1. Trident(IE内核):主要应用在早期的Internet Explorer浏览器。 2. Blink(Chrome内核):由Google主导,用于Chrome...

    易语言谷歌69内核最新浏览器源码

    7. **多平台兼容**:如果浏览器需要跨平台运行,那么需要考虑不同操作系统下的适配和兼容问题。 8. **调试和测试**:开发过程中,调试技巧和自动化测试工具的运用至关重要,确保代码质量和功能的正确性。 9. **...

    CSS浏览器兼容问题

    #### 三、常见CSS浏览器兼容性问题及解决方案 **1. 垂直居中问题** - **问题描述**:在使用`vertical-align: middle`时,非行内元素无法实现垂直居中。 - **解决方案**: - 使用`line-height`方法来模拟垂直居中...

    各种浏览器的兼容性

    在IT领域,浏览器兼容性是开发...总的来说,理解和解决浏览器兼容性问题对于任何Web开发者来说都是必备技能,通过合理的代码编写、工具辅助以及持续的测试,可以确保网页或应用在各种浏览器上都能提供一致的用户体验。

    浏览器兼容性

    #### 三、解决浏览器兼容性问题的方法 ##### 3.1 Meta标签兼容设置 对于Internet Explorer 8及以下版本,可以通过在`<head>`标签中加入特定的Meta标签来控制其渲染模式,例如: ```html ``` 这条语句会让IE8...

    基于Chrome内核的Opera浏览器兼容性Flash Player源码

    基于Chrome内核的Opera浏览器兼容性Flash Player源码项目,正是为了满足这一需求而生。该源码项目通过定制开发,旨在确保Flash Player能够在Opera浏览器及其基于Chrome内核的同类浏览器中保持良好的兼容性。通过这组...

    .net和 vb WebBrowser 浏览器兼容问题

    在.NET和VB(Visual Basic)开发环境中,使用WebBrowser控件可能会遇到一些浏览器兼容性问题。WebBrowser控件实质上是基于Internet Explorer内核的,因此它的行为与用户系统上安装的IE版本密切相关。这个问题在描述...

    浏览器的各种内核[参照].pdf

    浏览器内核的选择直接影响到浏览器的性能、兼容性和网页展示效果。以下是一些关于浏览器内核的重要知识点: 1. **Trident内核**:由微软开发,主要用于Windows平台上的Internet Explorer系列浏览器。Trident内核因...

    各浏览器css兼容写法

    DOCTYPE html>`)可确保浏览器以标准模式渲染页面,避免Quirks Mode带来的兼容性问题。 10. **测试工具**: - 使用浏览器开发者工具(如Chrome DevTools、Firefox Developer Tools)检查和调试样式。还可以使用...

Global site tag (gtag.js) - Google Analytics