Android浏览器的内核是Webkit引擎,WebKit的前身是KDE小组的KHTML。
Apple公司推出的Safari浏览器,使用的内核是装备了KHTML的WebKit引擎。
WebKit内核在手机上应用十分广泛。
WebKit 是一个开源浏览器网页排版引擎,类似的引擎有:
Gecko作为Mozilla, Firefox的内核,
Trident作为IE的内核(也称MSHTML)。
WebKit所包含的WebCore排版引擎和JSCore排版引擎来自于KDE的KHTML和KJS。
Apple公司选择WebKit作为内核是因为它拥有清晰的源码结构、极快的渲染速度。
WebKit由3个模块组成:JavaScriptCore, WebCore, WebKit。
1. JavaScriptCore: JavaScript解释器。
2. WebCore: 项目的核心,用来实现Render引擎。解析Web页面,生成一个DOM树和一个Render树。
3. WebKit: 整个项目的名称。
WebCore的主要功能有:
1. Page, 与外框相关的内容,包括Frame, Page, History, Focus, Window.
2. Loader, 加载资源及Cache。
3. HTML, DOM HTML 内容及解析。
4. XML, XML内容及解析。
5. DOM, DOM CORE 内容。
6. Render, 排版功能。
7. CSS, DOM CSS 内容。
8. Binding, DOM和JavaScriptCore绑定的功能。
9. Editing, 所有与编辑相关的内容。
JavaScriptCore的主要功能有:
1. API, 基本JavaScript功能。
2. Binding, 与其他功能的绑定,如DOM, C, JNI。
3. DerviedSource, 自动产生的代码。
4. ForwordHeads, 头文件,无实际意义。
5. PCRE, Perl-Compatible Regular Expressions.
6. KJS, JavaScript内核。
7. WTF, KDE的C++模型库。
WebKit的解析过程
1. CURL得到Stream。
2. 解析拆分字符串。
3. 通过DOM Buider按合法的HTML规范生成DOM树。
4. 如果有JavaScript, JSEngine就通过ECMA-262标准完善DOM树。
5. 把DOM传给LayoutEngine进行布局,如果有CSS样式,就通过CSSParser解析。
6. 最后Rendering渲染出来。
Google对WebKet进行了封装,为开发者提供了丰富的API,其中最重要的是android.webkit.WebKit控件。