网页浏览器“内核”与“外壳”的是是非非

2023-11-24 12:48

本文主要是介绍网页浏览器“内核”与“外壳”的是是非非,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

自从网页浏览器诞生之日起,各公司间的竞争、各“派别”拥护者之间的争吵,就从未停止过。直至今日,包括Internet Explorer、Firefox、Safari、Opera、Maxthon等各式各样的网页浏览器在市场上争奇斗艳,好不热闹。当然这其中也少不了恶意垄断、枪手炒作、网友争论等等。
事实上,还有很多人对浏览器的一些特性还不甚了解,所以就会有诸如“MT再好也只是一个壳”“有本事像FF那样自己弄内核去”“FF比IE的安全性高多了”这样的言论。起初,我对这些也不甚了解,也不愿参与这些争论。后来我慢慢地接触到了一些关于浏览器的东西,不敢独享,整理出来以FAQ的形式和大家分享,希望能提高大家对网页浏览器这种软件的认知度。



※本文文本为大眼夹原创,其中部分资料来自于Wikipedia等网络媒体,力争保持自己的言论的中立性。

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等。

 

这篇关于网页浏览器“内核”与“外壳”的是是非非的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/421973

相关文章

python运用requests模拟浏览器发送请求过程

《python运用requests模拟浏览器发送请求过程》模拟浏览器请求可选用requests处理静态内容,selenium应对动态页面,playwright支持高级自动化,设置代理和超时参数,根据需... 目录使用requests库模拟浏览器请求使用selenium自动化浏览器操作使用playwright

Python获取浏览器Cookies的四种方式小结

《Python获取浏览器Cookies的四种方式小结》在进行Web应用程序测试和开发时,获取浏览器Cookies是一项重要任务,本文我们介绍四种用Python获取浏览器Cookies的方式,具有一定的... 目录什么是 Cookie?1.使用Selenium库获取浏览器Cookies2.使用浏览器开发者工具

浏览器插件cursor实现自动注册、续杯的详细过程

《浏览器插件cursor实现自动注册、续杯的详细过程》Cursor简易注册助手脚本通过自动化邮箱填写和验证码获取流程,大大简化了Cursor的注册过程,它不仅提高了注册效率,还通过友好的用户界面和详细... 目录前言功能概述使用方法安装脚本使用流程邮箱输入页面验证码页面实战演示技术实现核心功能实现1. 随机

如何在Mac上彻底删除Edge账户? 手动卸载Edge浏览器并清理残留文件技巧

《如何在Mac上彻底删除Edge账户?手动卸载Edge浏览器并清理残留文件技巧》Mac上的Edge账户里存了不少网站密码和个人信息,结果同事一不小心打开了,简直尴尬到爆炸,想要卸载edge浏览器并清... 如果你遇到 Microsoft Edge 浏览器运行迟缓、频繁崩溃或网页加载异常等问题,可以尝试多种方

Python如何将OpenCV摄像头视频流通过浏览器播放

《Python如何将OpenCV摄像头视频流通过浏览器播放》:本文主要介绍Python如何将OpenCV摄像头视频流通过浏览器播放的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完... 目录方法1:使用Flask + MJPEG流实现代码使用方法优点缺点方法2:使用WebSocket传输视

HTML5 getUserMedia API网页录音实现指南示例小结

《HTML5getUserMediaAPI网页录音实现指南示例小结》本教程将指导你如何利用这一API,结合WebAudioAPI,实现网页录音功能,从获取音频流到处理和保存录音,整个过程将逐步... 目录1. html5 getUserMedia API简介1.1 API概念与历史1.2 功能与优势1.3

使用Python实现网页表格转换为markdown

《使用Python实现网页表格转换为markdown》在日常工作中,我们经常需要从网页上复制表格数据,并将其转换成Markdown格式,本文将使用Python编写一个网页表格转Markdown工具,需... 在日常工作中,我们经常需要从网页上复制表格数据,并将其转换成Markdown格式,以便在文档、邮件或

如何关闭Mac的Safari通知? 3招教你关闭Safari浏览器网站通知的技巧

《如何关闭Mac的Safari通知?3招教你关闭Safari浏览器网站通知的技巧》当我们在使用Mac电脑专注做一件事情的时候,总是会被一些消息推送通知所打扰,这时候,我们就希望关闭这些烦人的Mac通... Safari 浏览器的「通知」功能本意是为了方便用户及时获取最新资讯,但很容易被一些网站滥用,导致我们

一文教你Python如何快速精准抓取网页数据

《一文教你Python如何快速精准抓取网页数据》这篇文章主要为大家详细介绍了如何利用Python实现快速精准抓取网页数据,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录1. 准备工作2. 基础爬虫实现3. 高级功能扩展3.1 抓取文章详情3.2 保存数据到文件4. 完整示例

快速修复一个Panic的Linux内核的技巧

《快速修复一个Panic的Linux内核的技巧》Linux系统中运行了不当的mkinitcpio操作导致内核文件不能正常工作,重启的时候,内核启动中止于Panic状态,该怎么解决这个问题呢?下面我们就... 感谢China编程(www.chinasem.cn)网友 鸢一雨音 的投稿写这篇文章是有原因的。为了配置完