`

Web浏览器内核与外壳介绍

阅读更多

摘要:

浏览器最重要或者说核心的部分是“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 用户中最受欢迎的浏览器。 

===============================================

  自从网页浏览器诞生之日起,各公司间的竞争、各“派别”拥护者之间的争吵,就从未停止过。直至今日,包括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则更符合各种国际标准,显得更加“严谨”。

分享到:
评论

相关推荐

    浏览器兼容性设置级解释

    以下是对主要浏览器内核的简介: 1. **Mozilla Firefox**:使用Gecko内核,这是一个开源的渲染引擎,支持最新的Web标准,提供了良好的标准一致性。 2. **Internet Explorer (IE)**:使用Trident内核,早期版本如IE...

    基于CEF的web单页应用的桌面外壳

    CEF是Google的Chromium浏览器内核的一个开源版本,它允许开发者在桌面环境中嵌入网页渲染引擎,从而将Web应用转换为桌面应用。这种方式有助于简化开发流程,因为大部分工作可以在前端进行,同时又能提供类似原生应用...

    js判断浏览器

    本文将详细介绍如何使用JavaScript来检测用户正在使用的浏览器类型。 #### 1. 理解`navigator.userAgent` 在JavaScript中,可以通过`navigator.userAgent`属性获取用户的浏览器信息。该属性返回一个字符串,包含了...

    myie源码.zip_MyIE_ie浏览器_visual c_浏览器MyIE_浏览器源代码

    【标题】"myie源码.zip_MyIE_ie浏览器_visual c_浏览器MyIE_浏览器源代码" 提供的是一款名为 MyIE 的浏览器的源代码,它基于 Microsoft 的 Internet Explorer(简称 IE)内核,并且使用了 Visual C++ 进行开发。...

    [源代码] C# WinForms 模块 - 网页浏览器模块

    1. **WebBrowser控件介绍**:WebBrowser控件是.NET Framework提供的一个组件,它允许开发人员在Windows应用程序中嵌入Web浏览器功能。这个控件基于Internet Explorer的内核,因此它的行为与IE浏览器类似,可以加载...

    谷歌浏览器做游戏外壳包裹,使用CefSharp,不包含游戏本身,示例程序

    CefSharp提供了C#和VB.NET的API,使得.NET开发者可以轻松地集成Web浏览器功能到他们的应用程序中。这样的封装方式对于那些以Web技术构建的游戏非常有用,因为它们可以在无需额外的游戏运行环境的情况下,通过浏览器...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    综上所述,“认我测”在线认证检测系统,率先填补了认证检测领域移动端的空缺,提供了Web浏览器+移动端的双端访问模式,给用户提供了多种访问途径,真正实现了用户和检测机构的随时随地在线下单检测。 关键词:...

    JavaScript判断浏览器运行环境的详细方法

    JavaScript是Web开发中不可或缺的一部分,它允许我们与用户的浏览器进行交互,执行动态功能,并根据不同的设备和环境调整行为。在本文中,我们将深入探讨如何利用JavaScript来判断浏览器的运行环境,以便更好地适配...

    IE浏览器源代码,可以完全取代IE6,界面漂亮,喜欢的朋友可以下载看看

    标题中的“IE浏览器源代码”指的是Internet Explorer浏览器的原始编程代码,这通常对软件开发者或者对浏览器内核感兴趣的人员极具价值。源代码是程序的基础,它由程序员编写,以人类可读的语言描述了软件的功能和...

    svc.rar_Will

    这个文件很可能与浏览器的内核或者外壳层(shell)有关。在Web开发中,"content browser client"可能是负责处理用户界面与浏览器引擎交互的部分,它可能包含了处理网络请求、渲染页面、执行JavaScript等功能的代码...

    Linux系统编程第四章

    1. **用户应用程序**:这部分包括运行在特定Linux系统上的各种应用软件,如文字处理软件、Web浏览器等。具体的应用程序集合会根据系统的用途而有所不同。 2. **OS服务**:这个子系统包含了通常被认为是操作系统一...

    Linux系统结构、初始化及进程管理..doc

    用户应用程序是运行在Linux系统上的各种软件,包括文字处理器、Web浏览器等,它们依赖于操作系统提供的服务。操作系统服务通常包括窗口系统、命令外壳程序,以及编程接口,如编译工具和库。这些服务为用户提供与系统...

    Linux操作系统培训教材

    - **外壳**:用户与内核交互的界面,包括各种shell和图形界面环境。 - **应用程序**:用户可以直接操作的软件,如编辑器、浏览器等。 #### 二、Linux发行版 **2.1 发行版概念** Linux作为一个内核,其完整操作系统...

    myie2.41.zip_MyIE_maxthon

    MyIE2,后来被称为Maxthon,是一款基于Internet Explorer内核的多标签浏览器,它在互联网早期就因其自定义功能和用户友好的界面而受到了用户的欢迎。这个压缩包包含的是MyIE2的2.41版本的源代码,对于研究浏览器开发...

    atl封装ie AtlBrowser.zip

    通过ATL,开发者可以创建一个外壳,这个外壳与IE的ActiveX控件(即WebBrowser控件)交互,实现浏览网页、执行JavaScript、导航、下载等功能。封装的过程涉及到接口的实现、事件处理以及对COM对象生命周期的管理。 2...

    mRemoteNG 远程管理工具

    - **Geckofx-Core.dll**:这可能与mRemoteNG的Web浏览器内核有关,用于处理HTTP(S)协议的连接。 - **Interop.MSTSCLib.dll**:这是Microsoft终端服务客户端的互操作库,用于RDP连接。 - **ObjectListView.dll**:一...

    clicktoviewimages

    Shell 在这里可能指的是这种扩展的架构或实现方式,它提供了与浏览器内核交互的接口。 在压缩包文件 "clicktoviewimages-master" 中,我们可以预期找到的是该插件的源代码和相关资源。源代码通常包括 JavaScript ...

    serverless-wasm

    有人在从外壳程序运行WASM二进制文件,然后将WASM代码放入内核。 这是Web Assembly设计的一些优点: 与CPU组件的映射很好(考虑了Just In Time编译) 虚拟机不需要垃圾收集,只有来宾代码可以处理的小内存区域 ...

    linux tutorial

    - **lynx**: 无图形的Web浏览器。 ### Linux系统安装的经验分享 - **文件系统**: Linux支持多种文件系统,如ext2、ext3、ext4等。 - **日志文件系统**: ReiserFS是一种高性能的日志文件系统,可以提高系统的稳定性...

Global site tag (gtag.js) - Google Analytics