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 。

浏览器的分层结构

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

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

webview综述的更多相关文章

  1. Android 4.2版本以下使用WebView组件addJavascriptInterface方法存在JS漏洞

    JS注入漏洞存在的Android版本:Android < 4.2 综述:Android的SDK中提供了一个WebView组件,用于在应用中嵌入一个浏览器来进行网页浏览.WebView组件中的ad ...

  2. Android 之 用WebView显示网页

    WebView可以使得网页轻松的内嵌到 app 里,还可以直接跟js相互调用. WebView有两个方法:setWebChromeClient 和 setWebClient (1) setWebCli ...

  3. Android混合开发之WebView与Javascript交互

    前言: 最近公司的App为了加快开发效率选择了一部分功能采用H5开发,从目前市面的大部分App来讲,大致分成Native App.Web App.Hybrid App三种方式,个人觉得目前以Hybri ...

  4. android通过webview调起支付宝app支付

    webview在加载网页的时候会默认调起手机自带的浏览器加载网页,用户体验不好.但当用户设置浏览器客户端(setWebViewClient)设置这样的监听事件之后,当请求url的时候就不会打开手机自带 ...

  5. Android WebView 优化页面加载效果

    目前带有Web功能的APP越来越多,为了能够更好的使用WebView展示页面,可以考虑做相关的优化:WebView 缓存,资源文件本地存储,客户端UI优化. 可能有些人会说,为什么不做Native的, ...

  6. Android 浏览器 —— 使用 WebView 实现文件下载

    对当前的WebView设置下载监听 mCurrentWebView.setDownloadListener(new DownloadListener() { @Override public void ...

  7. Android混合开发之WebView使用总结

    前言: 今天修改项目中一个有关WebView使用的bug,激起了我总结WebView的动机,今天抽空做个总结. 混合开发相关博客: Android混合开发之WebView使用总结 Android混合开 ...

  8. 记一次使用 android 自带 WebView 做富文本编辑器之API、机型的兼容及各种奇葩bug的解决

    转载请声明出处(http://www.cnblogs.com/linguanh/) 目录 1,测试设备介绍 2,开源项目richeditor及CrossWalk的选择 3,遇到的bug及其解决方法 4 ...

  9. 【WP8.1】WebView笔记

    之前在WP8的时候做过WebBrowser相关的笔记,在WP8.1的WebView和WebBrowser有些不一样,在这里做一些笔记 下面分为几个部分 1.禁止缩放 2.JS通知后台C#代码(noti ...

随机推荐

  1. SQL Serever学习16——索引,触发器,数据库维护

    sqlserver2014数据库应用技术 <清华大学出版社> 索引 这是一个很重要的概念,我们知道数据在计算机中其实是分页存储的,就像是单词存在字典中一样 数据库索引可以帮助我们快速定位数 ...

  2. PHP项目学习1

    最近在学习PHP,看了<轻松学PHP>,2天看完,学习了很多基础知识,可是没有出什么成果.然后看<PHP项目开发全程实录>,里面讲到一个online影视365网,刚好有一个朋友 ...

  3. 个人开源项目之异步Http线程池框架

    项目开源于:https://github.com/HouZhiHouJue/AsyncHttpThreadPool 示意图:

  4. golang爬取免费代理IP

    golang爬取免费的代理IP,并验证代理IP是否可用 这里选择爬取西刺的免费代理Ip,并且只爬取了一页,爬取的时候不设置useAgent西刺不会给你数据,西刺也做反爬虫处理了,所以小心你的IP被封掉 ...

  5. [编程] C语言循环结构计算π的值

    公式: 分析:首先,系数为正数的项的分母是4n-3(n为正数项的项数),为负数的项的分母为4n-1(n为负数项的项数),即分母的变化规律是1.3.5.7...的奇数数列,则第n项的分母为2n-1,第1 ...

  6. java 并发(七)--- ThreadLocal

         文章部分图片来自参考资料 问题 : ThreadLocal 底层原理 ThreadLocal 需要注意什么问题,造成问题的原因是什么,防护措施是什么 ThreadLocal 概述 Threa ...

  7. java核心技术-多线程基础

    进程.线程 ​ 进程(Process) 是程序的运行实例.例如,一个运行的 Eclipse 就是一个进程.进程是程序向操作系统申请资源(如内存空间和文件句柄)的基本单位.线程(Thread)是进程中可 ...

  8. jenkins 分布式部署

    一 什么是Jenkins的分布式构建和部署 Jenkins的分布式构建,在Jenkins的配置中叫做节点,分布式构建能够让同一套代码或项目在不同的环境(如:Windows7\winxp和Linux系统 ...

  9. IDEA使用maven建web项目示例

    运行环境:OSX-10.13.3. IDEA-2017.3.3. maven-3.5.2 步骤1:选择maven-webapp模板新建web项目 步骤2:设置项目GroupId等 需从网上下载相关构件 ...

  10. svn add @2x image 文件

    svn add `svn status . | grep "^?" | awk '{print $2"@"}'`