(转)浏览器简介及WebKit学习

原创 2012年03月30日 09:03:39

转自大大狗之家http://blog.csdn.net/yirui

1.webkit简介

n
 WebKit是一个开源的Web浏览器的引擎,而不是一个完整的浏览器。Apple的Safari是基于WebKit上开发的浏览器,但Apple并没有开放它的代码。WebKit的原形是KDE的KHTML和KJS。官方网站:http://webkit.org
 
支持功能:

HTML4.0/5.0

CSS1&2
Dom1&2
ECMA262
JS1-6
HTTP/FILE
GIF/JPEG/PNG
XML
SSL3
JVM
FTP
SVG可缩放矢量图形(Scalable Vector Graphics) 
RSS2.0(RDF Site Summary )

MathML

 一般我们在PC下不会考虑开发浏览器,但在嵌入式领域可能就有这可能了。

浏览器的选型:

1。Geocko 功能强,但太庞大

2。Opera  功能强,但要钱

3。Ipanel  功能一般,也要钱

4。Ants 功能一般,还是要钱

5。WebKit 功能强,不要钱,呵呵就这个(有nokia,apple,google为例), 它属于 LGPL and BSD licenses.,

2.浏览器简介2-浏览器系统结构

浏览器的分层结构

 

n浏览器系统结构图分为四层
n第一层为业务应用层,用户可在webkit基础上构建各种应用。
n第二层为插件及第三方库。
n第三层为webkit平台Porting所需的接口层。
n最底层为平台和操作系统支持层,提供webkit平台所需的软硬件资源。

3.浏览器简介3-功能结构

浏览器功能结构

 4.浏览器简介4-体系结构

 

现代浏览器体系结构

5.浏览器简介5-webkit结构

nWebKit上层组织应用
nWebCore
¨Page与外框相关的内容(Frame,Page,History,Focus,Window)
¨Loader加载资源及Cache
¨HTML-DOM HTML内容及解析
¨DOM- DOM CORE内容
¨XML- XML内容及解析
¨Render-排版功能
¨CSS-DOM CSS内容
¨Binding-DOMJavascriptCore绑定的功能
¨Editing-所有与编辑相关的功能
nJavascriptCore-javascript引擎
¨API-基本javascript功能
¨Binding与其它功能绑定的功能,:DOM,C,JNI
¨DerviedSource自动产生的代码
¨ForwordHeads头文件,无实际意义
¨PCRE-Perl-Compatible Regular Expressions  (正则表达式函数库(Perl 兼容))
¨KJS-Javascript Kernel
¨WTF-KDEC++模板库
nUnicode-qt unicode 
nGToolsMalloc-Google TCMalloc
nCURL-url 客户端传输库
nPlatForm- 与平台相关的功能,如图形图像,字体,Unicode, IO,输入法等.

6.Webkit之webkit

 
nWebView 是webkit最核心的一个view,WebView管理WebFrameView和WebFrame之间的交互,一个WebView对象绑定一个window,并且要求MainFrame加载url,一个WebPage对应一个Window. 
  
WebView
n它对应的是根window。 
n它负责处理外部所有消息,并转发给相关模块。 
n它负责mainFrame和历史记录的管理工作。 
n¨  
WebFrame
nFrame的管理者 
n负责资源加载和反馈处理 
¨临时数据资源(provisional data source)和确认数据资源(Committed Data Sources) 
¨WebKit提交请求是异步响应的。在发送请求到收到数据的过程,Webkit会创建一个临时数据资源(provisional data source),这个资源并不知道是否能正确接收数据,所以是临时的。当这个临时数据资源变成有效时,WebFrame才会有真正的数据资源。开始WebFrame并没有数据资源(data source),只有一个空白页显示。 
¨WebFrame收到第一个字节数据,Data Source就变确认数据资源(Committed Data Sources) 
¨了。如果临时数据资源(provisional data source)有错误,就不会变成确认数据资源(Committed Data Sources)。 
¨当数据资源变成确认的(committed)状态,WebFrame将创建相应的document representation 和document view 。

7.webkit学习大纲

《webkit入门准备》

1.      C++

a)        Webkit代码风格

b)        Inline

c)        Const

d)        构造与析构

e)        重载

f)         继承

2.      泛式编程

a)        Vector/List/HashTable

b)        Iterator

c)        智能指针

3.      面向对象编程

a)        对象概念

b)        设计模式

4.      调试、测试及工具

a)        GccMakefile

b)        Trace

c)        VC

d)        Gdb

e)        Alertjavascript调试

f)         GUN binary工具

g)        JsUnit

h)        Javascript框架Dojo

i)          JsDoc

j)          JsLint

k)        HTML Validator

l)          Dom inspector

m)      Xml spy

n)        标准测试用例

5.      性能分析

a)        Gprof

6.      Socket

7.      编译原理

a)        词法

b)        语法

8.      操作系统

a)        Linux线程

b)        Linux 内存

c)        编译与链接

《体系结构详解》

1.      浏览器功能结构

2.      浏览器结构

3.      Webkit体系结构

4.      WebKit目录结构

5.      WebKit编译

HTML引擎详解》

1.      HTML语法

2.      Dom Core

3.      Dom Event

4.      Dom Html

5.      焦点处理

6.      HTML扩展

JS引擎详解》

1.      Javascript语法

2.      JS Binding

3.      JS Interpreter

4.      GarbageCollect

5.      javascript扩展

CSS排版详解》

1.      CSS语法

2.      Dom-CSS

3.      Dom-Style

4.      Paint

5.      CSS风格扩展

CURLSSL详解》

1.      Loader

2.      Curl

3.      HTTP

4.      SSL

XML引擎详解》

1.      XML

2.      Ajax

TCMalloc内存管理机制》

1.      内存池

2.      TcMalloc

《其它》

1.      WebKit外壳封装

2.      Plugin插件机制

3.      Pcre正则表达式函数库

4.      WTF C++模板库



webkit浏览器开发之路(一)——环境搭建

最近在着手开发浏览器,于是便用到了非常受欢迎的webkit,
  • coffeeRoy
  • coffeeRoy
  • 2014年06月06日 09:57
  • 2681

WEBKIT内核源码分析系列

原帖地址:http://www.cnblogs.com/qq499194341/articles/2891954.html
  • jiangnanyidiao
  • jiangnanyidiao
  • 2014年07月16日 10:23
  • 2525

利用开源浏览器 引擎 制作最简单的 浏览器 webkit cefsharp

http://www.webkit.org/ http://dev.chromium.org/chromium-projects
  • apple2k
  • apple2k
  • 2014年04月21日 13:40
  • 701

Webkit 浏览器默认焦点查找算法

当我们用 方向键 在 HTML页面 上移动,此时,可通过多种方式控制焦点行为: 1、通过 JS 逻辑,控制焦点的移动,此时下一个焦点位置,完全是由 JS 来控制 2、可通过浏览器默认行为,浏览器会计算...
  • yezi_zhi
  • yezi_zhi
  • 2016年09月21日 19:01
  • 577

从零开始基于ARM 交叉编译开源浏览器webkit

出发点: 我想看免费的国内外网络电视,所以基于ARM板DIY一个Internet TV, 需要做的工作主要有:               1) 编译浏览器webkit               2...
  • moruite
  • moruite
  • 2010年03月22日 21:54
  • 8386

webkit浏览器常见开发问题

我们在学习的时候往往都是框架的学习,在遇到问题时候才细致的去分析问题,有些问题虽然小但我们不可忽略。...
  • yistn
  • yistn
  • 2015年04月15日 14:18
  • 321

WebKit之硬件加速的原理介绍

Chromium支持硬件加速渲染网页,即使用GPU渲染网页。在多进程架构下,Browser、Render和Plugin进程的GPU命令不是在本进程中执行的,而是转发给GPU进程执行。这是因为GPU命令...
  • sauphy
  • sauphy
  • 2016年01月13日 00:35
  • 787

在mfc中使用cef实现webkit的浏览器(一)-准备工作

首先,下载一个cef的开发包,我下载的是 cef_binary_3.2171.1901_windows32 这个版本的(下载链接)。 下载完成解压后,用vs打开,编译其中的 libcef_dll...
  • long12310225
  • long12310225
  • 2017年08月31日 08:58
  • 449

C#WinForm集成Webkit浏览器内核

1、下载WebKit程序集 官方下载地址:Download WebKit .NET from SourceForge.net 百度云分享:链接:http://pan.baidu.com/s/1nuQ...
  • qcmy980
  • qcmy980
  • 2016年10月13日 10:16
  • 11169

给Webkit内核的浏览器控件增加互交功能

昨天封装了基于webkit的wke浏览器内核,做成了duilib的浏览器控件,实现了浏览功能,但是单单的浏览功能还不满足需求,在我的仿酷狗项目中乐库的功能需要与浏览器互交。     大家知道在使用酷狗...
  • zhuhongshu
  • zhuhongshu
  • 2014年07月26日 15:55
  • 8621
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:(转)浏览器简介及WebKit学习
举报原因:
原因补充:

(最多只允许输入30个字)