浏览器的构成:一般由7个模块组成:User Interface(用户界面)、Browser engine(浏览器引擎)、Rendering engine(渲染引擎)、Networking(网络)、JavaScript Interpreter(js解释器)、UI Backend(UI后端)、Date Persistence(数据持久化存储)
用户界面:包括地址栏、后退/前进按钮、书签目录等,也就是所看到的除了页面显示窗口之外的其他部分。
浏览器引擎:可以在用户面和渲染引擎之间传送指令或在客户端本地缓存中读写数据等,是浏览器中各个部分之间相互通信的核心。
渲染引擎:解析DOM文档和CSS规则并将内容排版到浏览器中显示有样式的界面,也有人称之为排版引擎,我们常说的浏览器内核主要指的就是渲染引擎。
网络:用来完成网络调用或资源下载的模块。
UI后端:用来绘制基本的浏览器窗口内控件,如输入框、按钮、单选按钮等,根据浏览器不同绘制的视觉效果也不同,但功能都是一样的。
JS解释器:用来解释执行JS脚本的模块,如V8引擎,JavaScriptCore
数据存储:浏览器在硬盘中保存cookie、localStorage等各种数据,可通过浏览器引擎提供的API进行调用。
主流浏览器的内核
Trident(IE内核)
Trident内核代表产品Internet Explorer,是微软开发的一种排版引擎。
Gecko(Firefox 火狐)
Gecko内核代表作品Mozilla FirefoxGecko是一套开放源代码的,以C++编写的网页排版引擎。Gecko是最流行的排版引擎之一,仅次于Trident。
Webkit(Safari)
苹果公司自己的内核,也是Safari浏览器的内核。Webkit内核代表作品Safari 、Chromewebkit是一个开源项目,包含了来自KDE项目和苹果公司的一些组件,
主要用于Mac IOS系统,特点在于源码结构清晰,渲染速度极快。缺点是对网页代码的兼容性不高,导致一些编写不标准的网页无法正常显示,主要代表作品有Safari和Google。
Presto(Opera)
Presto内核代表作品OperaPresto是由OperaSoftware开发的浏览器排版引擎,供Opera7.0及以上使用,它取代了旧版Opera4至6版本使用的Elektra排版引擎,包括加入动态功能,
例如网页或其部分可随着DOM及Script语法的事件而重新排版。
Blink(Chrome)
有Google和Opera Software挨罚的浏览器排版引擎,2013年4月发布,现在Chrome内核是Blink。Blink其实是webkit的分支,大部分国产浏览器最新版都采用Blink内核。
移动端的浏览器内核主要说的是系统内置浏览器的内核。
目前移动设备浏览器上常用的内核有Webkit、Blink、Trident、Gecko,其中苹果iOS平台主要是Webkit,Android4.4之前Android系统浏览器的内核是Webkit,Android4.4之后使用Blink,Windows Phone8系统浏览器内核是Trident。
有些网站要求用IE打开,是因为兼容问题,有些时候要求的其实是IE内核浏览器,因为大部分网页是针对ie来做的,非ie内核的有火狐浏览器,有的时候就不正常显示网页,不过可以下载ie插件来实现。
扩展资料:
浏览器产生兼容性问题的原因是:
1.不同内核对相同事件的处理方法不同
比如说IE获取鼠标位置用的是offsetX和offsetY,而firefox用的是layerX和layerY。
2. 不同内核对CSS、JS、TML的支持不同
比如IE的内核trident对于CSS2和CSS3都是部分支持,而webkit对CSS2可以完全支持。此外,由于各种喜闻乐见的原因,IE内核trident版本不同,对于CSS,JS,HTML的支持也不同。所以有些网页会要求使用IE8以上打开。
3. IE支持ActiveX控件