`
liudaoru
  • 浏览: 1578929 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

网页浏览器的“内核”与“外壳”[z]

阅读更多

注:现在无论在工作中还是在生活中浏览器都占据着非常重要的作用,但是浏览器大致有哪些分类,什么是内核,什么是外壳这些问题却可能不是很清楚,正好在CSDN上看到这篇文章,推荐给大家看看。另外还有一个比较简洁的介绍,也贴过来同大家分享。 ============================================================
 浏览器最重要或者说核心的部分是“Rendering Engine”,可大概译为“解释引擎”,不过我们一般习惯将之称为“浏览器内核”。负责对网页语法的解释(如HTML、JavaScript)并渲染(显示)网页。

不同的浏览器内核对网页编写语法的解释也有不同,因此同一网页在不同的内核的浏览器里的渲染(显示)效果也可能不同,这也是网页编写者需要在不同内核的浏览器中测试网页显示效果的原因。

几种常见的浏览器内核简介:

  1. Trident:Windows 下的 IE 浏览器使用的内核代号。除 IE 外,众多的 IE Shell(如 Maxthon )都使用这个内核。
  2. Gecko:Mozilla Firefox 浏览器使用的内核代号。使用 Gecko 内核的浏览器也有不少,如 Netscape 、MozillaSuite/SeaMonkey 等。另外,Mozilla Thunderbird 也使用 Gecko 。
  3. Presto:Opera 浏览器使用的内核代号,这是目前公认网页浏览速度最快的浏览器内核。
  4. KHTML/WebCore: Konqueror/Safari 浏览器使用的内核代号。Konqueror 是 X 协议下的 KDE 桌面环境使用的浏览器和资源管理器,可以用在 Unix/Linux/BSD 系统中,据说 KDE 4.0 以后会有向 Windows 移植的计划;Safari 则是 Apple 用户中最受欢迎的浏览器。 

================================================================
    自从网页浏览器诞生之日起,各公司间的竞争、各“派别”拥护者之间的争吵,就从未停止过。A1:“内核”只是一个通俗的说法,其英文名称为“Layout engine”,翻译过来就是“排版引擎”,也被称为“页面渲染引擎”(下文中各种说法通用)。

  自从网页浏览器诞生之日起,各公司间的竞争、各“派别”拥护者之间的争吵,就从未停止过。直至今日,包括Internet Explorer、Firefox、Safari、Opera、Maxthon等各式各样的网页浏览器在市场上争奇斗艳,好不热闹。当然这其中也少不了恶意垄断、枪手炒作、网友争论等等。

  事实上,还有很多人对浏览器的一些特性还不甚了解,所以就会有诸如“MT再好也只是一个壳”“有本事像FF那样自己弄内核去”“FF比IE的安全性高多了”这样的言论。起初,我对这些也不甚了解,也不愿参与这些争论。后来我慢慢地接触到了一些关于浏览器的东西,不敢独享,整理出来以FAQ的形式和大家分享,希望能提高大家对网页浏览器这种软件的认知度。

  Q1:经常听人家说什么浏览器“内核”和“外壳”,它们都是什么意思?

  A1:“内核”只是一个通俗的说法,其英文名称为“Layout engine”,翻译过来就是“排版引擎”,也被称为“页面渲染引擎”(下文中各种说法通用)。它负责取得网页的内容(HTML、XML、图像等等)、整理信息(例如加入CSS等),以及计算网页的显示方式,然后会输出至显示器或打印机。所有网页浏览器、电子邮件客户端以及其它需要编辑、显示网络内容的应用程序都需要排版引擎。

  而浏览器的“外壳”便很好理解了,它是一个面向用户的界面,也就是网页浏览器为我们实现的各种功能。

  Q2:浏览器的内核有哪些?

  A2:事实上,有很多种(废话!),但是常见的有Trident、Gecko、WebCore、Presto等。

  Q3:Trident是什么内核?

  A3:Trident(又称为MSHTML),是微软开发的一种排版引擎。它的第一个版本随着1997年10月Internet Explorer第四版的发布而发布。随后,Trident不断地被更新和完善:

  Trident II(IE5)——增进对CSS1.0的支持及对CSS2重大的变更

  Trident III(IE5.5)——修正部分CSS的排版控制

  Trident IV(IE6)——修正了一部分box-model的错误以及增加了“兼容模式(Quirks Mode)”切换功能,以增加对文件类型描述(Document Type Definition,DTD)的支持

  Trident V(IE7)——修正许多CSS排版处理上的错误以及增加对PNG格式alpha通道(半透明)的支持

  不光是IE,Windows中的许多地方也使用了Trident的技术,包括从Windows 98到Windows Server 2003所有版本的Windows Explorer、Windows 98及其后续所有版本的视窗操作系统内的Windows Help程序。此外,像RealPlayer、Windows Media Player、Windows Live Messenger、Outlook Express等等也使用了Trident技术。也正因为如此,Trident无法从Windows系统中彻彻底底地卸载掉,就算是彻底卸载了,Windows的许多功能也会出现问题。

  使用Trident内核的网页浏览器有:AOL Explorer、Avant、Internet Explorer、Maxthon、Netscape Browser (v.8)、Sleipnir、TheWorld、腾迅TT等。

  Q4:Gecko是什么内核?

  A4:Gecko是套开放源代码的、以C++编写的网页排版引擎。这软件原本是由网景通讯公司开发的,现在则由Mozilla基金会维护。

  由于Gecko是开源的,所以使用Gecko的网页浏览器也很多,其中的领军人物便是Mozilla Firefox。此外还有AOL for Mac OS X、Camino、Epiphany、Flock、Galeon、Netscape Browser (v.8)、Sleipnir、Maxthon等。

  Q5:WebCore是什么内核?

  A5:WebCore是苹果公司开发的排版引擎,它是在另外一个排版引擎“KHTML”的基础上而来的。苹果电脑于2002年采纳了KHTML,作为开发Safari浏览器之用,并发布所修改的最新及过去版本源代码。后来发表了开放源代码的WebCore及WebKit引擎,它们均是KHTML的衍生产品。使用WebCore的主要有Safari,此外还有OmniWeb、Shiira、Swift等。

  Q6:Presto是什么内核?

  Q6:Presto是一个由Opera Software开发的浏览器排版引擎,供Opera 7.0及以上使用。此外,Macromedia Dreamweaver (MX版本及以上)和Adobe Creative Suite 2也使用了Presto的内核。

  Q7:(强烈推荐)浏览器的内核和外壳有什么联系?

  A7:刚才已经说到,内核负责处理网页的内容,而外壳负责提供给用户一些功能。外壳的某些功能是需要联系到内核的,比如保存网页上的图片;而有些功能是不需要经过内核的,比如前进后退功能(当然,在载入了URL以后还是需要经过内核的)。

  相信大家都使用过XP中控制面板里的“用户帐户”功能,这实际上可以给我们一个更加感性的认识。用户帐户的操作界面实际上就是一个小型且功能单一的网页浏览器,它通过调用IE内核来显示主界面,而上方的“上一步”“下一步”等按钮便是浏览器外壳所提供的功能。

  说到这里,我们可以回看文章开头提到的一些网友的言论。有些人认为,Maxthon仅仅是附庸在IE之上的一个浏览器,根本不值得和IE、Firefox相提并论。这其实并不妥当。首先,Maxthon是支持Trident和Gecko双内核的(支持Gecko内核时需要单独安装Gecko组件,而且目前的2系列貌似没有Gecko内核支持),所以它并不是“IE的附庸”。此外,我们已经知道,浏览器分有内核和外壳两部分。以这个眼光来看,Maxthon是Maxthon Shell+Trident(或Gecko),而Internet Explorer是IE Shell+Trident,Firefox是FF Shell+Gecko,这三款浏览器的地位实际上是一样的。只不过IE Shell和Trident都是微软开发,而FF Shell和Gecko都是Mozilla基金会在维护。同时,说IE是“IE内核”,FF是“FF内核”也是不准确的,毕竟弄IE Shell和Trident的肯定不是微软的同一个小组,而FF Shell和Gecko肯定也不是Mozilla基金会的同一个小组在维护(更何况Gecko原来也不是Mozilla开发的,原先Mozilla只是网景公司的非正式组织)。当然不可否认,拥有了内核和外壳的微软和Mozilla,在开发浏览器的能力方面肯定是要高于Maxthon的,Maxthon不可能掌握到关键技术。

  Q8:各种内核哪一个更好一点呢?

  A8:哪一个更好,这个问题的确很难回答,应该说是各有侧重点。Trident内核使用最多,因此很多网页甚至只兼容Trident内核,而导致使用Gecko时会出现各种各样的问题。但是Trident也是最“乱”的一个内核。而Gecko、WebCore、Presto则更符合各种国际标准,显得更加“严谨”。

  Q9:各种内核都有些什么不同呢?

  A9:这个问题,在wikipedia上有非常详细的说明。现把相关链接列表如下:

  排版引擎比较(概述)

  排版引擎比较(HTML)

  排版引擎比较(XML)

  排版引擎比较(XHTML)

  排版引擎比较(图形)

  排版引擎比较(CSS)

  排版引擎比较(DOM)

  排版引擎比较(WHATWG)

  排版引擎比较(ECMAScript)

  排版引擎比较(SVG)

  Q10:有没有什么组织对排版引擎做测试的呢?就像杀毒软件界的VB100%那样?

  A10:还真有这么一个组织,它叫做网页标准计划小组(Web Standards Project)。他们推出了一个综合测试的网页,取名为Acid。由于现在的是第二版,所以又叫Acid2。

  该测试页透过严谨的编码,可快速辨认网页排版的漏洞,而测试要求是排版引擎需能排出如下图中的笑脸,在测试刚推出时,没有一个浏览器可排出要求的图像。

  

  

  目前能够完全显示出正确图形的浏览器有:Safari 2.0.3、Konqueror 3.5、Opera 9、Mozilla Firefox 3.0 Alpha、iCab、Prince 5.1等。下面列出了其他未通过浏览器的表现(图片属于Public Domain)

  

  

  ↑Acid2在IE6下的表现

  

  

  ?

  ↑Acid2在IE7下的表现

  ?

  

  

  ↑Acid2在FireFox1.5和2.0版本下的表现

  

  

  ↑Acid2在Netscape7.2下的表现

  如果大家有兴趣,也可以去测试测试。Acid2的测试网址在:http://www.webstandards.org/files/acid2/test.html。

  具体的测试技术详解在:http://www.webstandards.org/action/acid2/guide/。

  通过前面10个问题的解答,相信大家已经对网页浏览器的内核和外壳,特别是内核,有了更深的了解。我同时希望各位今后在讨论问题的时候少一点激进,多一点文明,少一点无赖,多一点睿智。

 

 

分享到:
评论
1 楼 vera_sq 2011-12-04  
挺有用的,不过图片看不见!!!

相关推荐

    Cef浏览器内核.zip_C# 浏览器 CEF_cef浏览器_cef浏览器 1688_cef浏览器内核_浏览器

    **Cef浏览器内核**是基于Chromium Embedded Framework (CEF) 的一款开源浏览器组件,它为开发者提供了在C#编程环境中构建嵌入式浏览器应用的能力。CEF是一个强大的框架,允许开发者将Chromium浏览器引擎集成到自己的...

    浏览器内核

    浏览器内核是构建网页浏览器的核心组件,它负责解析HTML、CSS、JavaScript等Web标准语言,渲染页面,并与用户的交互进行处理。"WebKit.NET-0.5"是一个将Chrome浏览器的内核WebKit移植到.NET框架的项目,使得开发者...

    开源浏览器内核原码

    开源浏览器内核原码是软件开发领域中的一个重要话题,它涉及到如何构建、理解和修改网络浏览器的核心组件。在本案例中,我们关注的是一个名为“csEXWB”的项目,这是一个基于C#语言的开源浏览器内核。C#是一种现代、...

    腾讯 X5 浏览器内核 静态 集成demo

    腾讯X5浏览器内核是腾讯开发的一款高性能、高效能的移动设备浏览器核心,它被广泛应用于许多Android应用中,提供快速的网页加载速度和优秀的页面渲染效果。在本"腾讯X5浏览器内核静态集成demo"中,我们将探讨两种...

    主流浏览器内核概览.doc

    在计算机科学和互联网领域,渲染引擎或浏览器内核对于用户与网络世界的交互起着至关重要的作用。不同的浏览器内核有着各自的特点和解析机制,这使得它们在处理HTML、CSS、JavaScript等网页语言时存在差异,从而影响...

    浏览器内核检测工具.txt

    浏览器内核检测工具浏览器内核检测工具浏览器内工具.核检测工具浏览器内核检测工具浏览器内核检测工具ss

    WebKitCairo.zip_VB 浏览器 内核_VB6 谷歌内核_ie vb_浏览器控件_非IE内核

    VB环境下使用非IE内核的浏览器控件,Google

    浏览器内核chromium84(2020)版本

    浏览器内核Chromium 84是Google Chrome浏览器的核心组件,它是开源的,允许开发者们根据自己的需求进行定制和改进。这个版本在2020年发布,主要关注性能优化、安全更新以及对Web标准的支持。在游戏开发领域,尤其是...

    Android framework 新版WebView浏览器内核101.0.4951.61

    Android framework 系统编译 新版WebView浏览器内核101.0.4951.61

    浏览器内核详解

    它处理从网络接收的数据,执行脚本,与操作系统交互,确保浏览器能正确、高效地显示网页内容。内核的不同会导致浏览器对网页的渲染方式、性能表现以及对网页标准的支持程度有所差异。 Trident内核,由微软开发,...

    得到浏览器尺寸,判断浏览器内核

    标题“得到浏览器尺寸,判断浏览器内核”涉及的是前端开发中的一个重要方面,即浏览器兼容性和用户界面交互。这篇博文可能是关于如何获取浏览器窗口的尺寸以及识别浏览器所使用的渲染引擎(内核)。在网页开发中,...

    利用jQuery插件扩展识别浏览器内核与外壳的类型和版本的实现代码

    在B/S开发过程中,对浏览器内核与外壳的识别是一个非常实用的技术。浏览器内核是浏览器最核心的部分,负责页面的解析和渲染,而浏览器外壳则指的是浏览器的用户界面和交互逻辑。这两者对于网页开发者来说非常重要,...

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

    Trident内核因其在IE6中的广泛使用而著名,早期版本对W3C标准支持不足,导致许多网站针对IE6进行了特殊优化,从而造成与其他遵循标准的浏览器的兼容问题。随着版本的更新,如IE9及以后的版本,Trident对标准的支持...

    cpp-一个小巧轻量的浏览器内核用来取代wke和libcef

    在IT行业中,浏览器内核是控制网页渲染和与用户交互的关键组件。现在,我们来深入探讨这个话题。 首先,Wke(Webkit for Embedded)是一个小型的、轻量级的Web浏览器引擎,它基于开源的WebKit项目,广泛应用于...

    java调用chrome浏览器内核cef实现,非jxbrowser

    Java调用Chrome浏览器内核是开发桌面应用时一个常见的需求,尤其在需要嵌入Web页面或者与Web内容交互的场景下。CEF(Chromium Embedded Framework)是一个开源项目,它允许开发者将Google Chrome的Blink渲染引擎和V8...

    测试浏览器内核

    测试浏览器内核版本

    java基于IE内核网页浏览器

    Java基于IE内核的网页浏览器是一种使用Java编程语言开发的软件,它利用Internet Explorer的内核来渲染和解析网页内容。这种浏览器通常采用多标签式界面,为用户提供多个网页同时浏览的功能,增强了用户在互联网上的...

    判断浏览器内核是微信还是QQ 安卓还是IOS

    判断浏览器内核是微信还是QQ 安卓还是IOS 根据结果写样式与方法

    常见浏览器内核及其特点

    在IT行业的前端开发与网页测试领域,了解不同的浏览器内核及其特性是至关重要的。这是因为不同的浏览器内核在解析HTML、CSS以及执行JavaScript时可能存在差异,这直接影响到网页的兼容性和性能表现。根据提供的文件...

Global site tag (gtag.js) - Google Analytics