CEF3基本的框架包含C/C++程 序接口,通过本地库的接口来实现,而这个库则会隔离宿主程序和 Chromium&Webkit的操作细节。它在浏览器控件和宿主程序之间提供紧密的整合,它支持用户插件,协议,JavaScript对象以及 javascript扩展,宿主程序可以随意地控件资源下载,导航,下下文内容和打印等。下边总结一些最常用到的类和接口,便于了解整个cef3的代码。

CefBrowser是主要的浏览器窗口类,可以用静态的函数CreateBrowser() 和CreateBrowserSync() 来创建一个新的浏览器窗口,公开由浏览器提供的功能。包括前进后退导航,来源检索,加载请求等。

CefFrame 代表一个浏览器窗口的框架,每个浏览器窗口有一个顶层的主框架,而这个主框架可以用GetMainFrame() 方法得到。

CefBrowser和CefFrame对象被用来发送命令给浏览器以及在回调函数里获取状态信息。每个CefBrowser对象包含一个主 CefFrame对象,主CefFrame对象代表页面的顶层frame;同时每个CefBrowser对象可以包含零个或多个的CefFrame对象, 分别代表不同的子Frame。例如,一个浏览器加载了两个iframe,则该CefBrowser对象拥有三个CefFrame对象(顶层frame和两 个iframe)。

CefApp,此接口用来传递到CefInitialize(),和允许应用程序定制全局,如资源加载,代理。一些功能是由所有进程共享的,有些必须实现浏览器的过程中,必须在渲染过程中执行。见详情头文件的注释。

CefClient:是主浏览器窗口的代表接口,这个接口做为参数传递给CreateBrowser()

CefRequest:代表URL,方法,发送数据和头文件等这样的请求。

CefSchemeHandleFactory:被用来处理像myscheme://mydomain类似客户计划的请求

CefReadHandler和CefWriteHandle是一个读写数据的简单接口。

CefV8Handler,CefV8Value和CefV8Context是被用来创建和访问JavaScript对象。

CefBrowserHost:有关运行browser进程中唯一可用的browser窗口的功能。例如,检索本地父窗口句柄,或销毁browser窗口。

CefRenderProcessHandler:WebKit和V8对渲染进程中应用程序的集成能力。通过CefApp返回此对象的一个​​实例。

CefCookie:处理cookie的功能。

使用CEF3开发的过程中,CefClient使用最频繁的,了解cefclient中的回调类是很有必要的。所谓回调类,就是浏览器相关的动作发生时,去回调一些事件函数,用户可以在事件中获取或修改相关的信息。cefclient中的回调类包括:

CefContextMenuHandler,回调类,主要用于处理 Context Menu 事件。

CefDialogHandler,回调类,主要用来处理对话框事件。

CefDisplayHandler,回调类,处理与页面状态相关的事件,如页面加载情况的变化,地址栏变化,标题变化等事件。

GetDragHandler,回调类,处理拖拽相关的事件,如从外边拖入浏览器事件

CefDownloadHandler,回调类,主要用来处理文件下载。

CefFocusHandler,回调类,主要用来处理焦点事件。

CefGeolocationHandler,回调类,用于申请 geolocation 权限。

CefJSDialogHandler,回调类,主要用来处理 js 对话框事件。

CefKeyboardHandler,回调类,主要用来处理键盘输入事件。

CefLifeSpanHandler,回调类,主要用来处理与浏览器生命周期相关的事件,与浏览器对象的创建、销毁以及弹出框的管理。

CefLoadHandler,回调类,主要用来处理浏览器页面加载状态的变化,如页面加载开始,完成,出错等。

CefRenderHandler,回调类,主要用来处在在窗口渲染功能被关闭的情况下的事件。

CefRequestHandler,回调类,主要用来处理与浏览器请求相关的的事件,如资源的的加载,重定向等。

CEF3的CefBrowser类是实现浏览器最主要的一个类。主要有以下实现类组成:

CefMainDelegate实现通用进程的引导逻辑。

CefContentClient实现所有进程中共同的ContentAPI回调。

CefContext代表全局CEF内容在browser进程中。单个CefContext对象由CefInitialize()创建并由CefShutdown()销毁。

CefBrowserMainParts实现browser进程中的引导逻辑。

CefContentBrowserClient实现browser进程的ContentAPI回调。

CefBrowserHostImpl实现在browser进程中CefBrowser和CefBrowserHost的接口。提供粘合代码和工具的接口来和RenderViewHost通信。

CefContentRendererClient实现渲染进程中的ContentAPI回调。

CefBrowserImpl实现渲染进程中的CefBrowser接口。提供粘合代码和工具的借口来和RenderView通信。

cef3的各个接口你知道几个的更多相关文章

  1. webrower + CEF

    理解WebKit和Chromium: Content API和CEF3 标签:               apiAPIAPibrowserchromeChromehtml5HTML5Html5web ...

  2. CEF3开发者系列之类和接口

    CEF3基本的框架包含C/C++程 序接口,通过本地库的接口来实现,而这个库则会隔离宿主程序和 Chromium&Webkit的操作细节.它在浏览器控件和宿主程序之间提供紧密的整合,它支持用户 ...

  3. CEF3开发者系列之JS与C++交互之二

    本文翻译自JavaScriptIntegration (https://bitbucket.org/chromiumembedded/cef/wiki/JavaScriptIntegration).本 ...

  4. CEF3开发者系列之进程间消息传递

    在使用CEF3作为框架开发过程中,实现WebSockets.XMLHttpRequest.JS与本地客户端交互等功能时,需要在渲染(Render)进程和浏览(Browser)进程中传递消息.CEF3在 ...

  5. CEF3开发者系列之工程和代码结构

    CEF支持一系列的编程语言和操作系统,并且能很容易地整合到新的或已有的工程中去.它的设计思想就是易用且兼顾性能. CEF3支持一系列的编程语言和操作系统,并且能很容易地整合到新的或已有的工程中去.它的 ...

  6. cef3和duilib简单仿有道词典学习

    由于最近换工作的原因,也没啥事,就简单学习了一下cef3和duilib,楼主之前是做MFC框架下的windows开发的,对界面库和新的客户端开发模式也有所了解,现在的大部分客户端都是基本的客户端框架下 ...

  7. Delphi中Chrome Chromium、Cef3学习笔记(一)

    原文   http://blog.csdn.net/xtfnpgy/article/details/46635225   官方下载地址:https://cefbuilds.com/ CEF简介: 嵌入 ...

  8. CEF3开发者系列之Cookies管理和共享

    涉及网页登录相关的技术,Cookies肯定是忽略不了的.由于项目的需要,要做一个双核的产品.双核间切换会涉及到登录状态的问题,共享Cookies是一个很好的方案.既然涉及到共享cookies,那么读取 ...

  9. 【WebKit内核 CEF3 】 第一篇:下载分支代码并本地编译

    关于CEF  Chromium Embedded Framework 简单说就是  WebKit内核的 对外绑定. 当前主流浏览器内核 一.Trident内核代表产品Internet Explorer ...

随机推荐

  1. 关于Ubuntu 16.04中E: Could not get lock /var/lib/dpkg/lock - open的三种解决方案

    问题 在Ubuntu中,有时候运用sudo  apt-get install 安装软件时,会出现如下的情况: E: Could not get lock /var/lib/dpkg/lock - op ...

  2. zabbix告警邮件、短信发送错误快速排查方法

    zabbix告警邮件.短信发送错误快速排查方法 背景 zabbix告警邮件.短信经常有同事反馈发送错误的情况,这个问题排查的角度很多,那么最快捷的角度是什么呢? 在我看来,最快的角度就是判断这个告警邮 ...

  3. The following signatures couldn't be verified because the public key is not available: NO_PUBKEY XXXX

    reference apt-key adv --recv-keys --keyserver keyserver.ubuntu.com XXXXXX apt-get update

  4. Sqlserver查询结果集插入新表

    数据库“Test” 数据库“Test2” 表 “fromTable” 表 “toTable” 表 “newTable” 字段 “name”,“age”,“gender” 原因:公司有2个数据库,一个是 ...

  5. MySQL多版本并发控制(MVCC)

    MVCC是行级锁的一个变种,但是它在很多的情况下避免了加锁操作,因此开销更低.MySQL,包括Oracle.PostgreSQL都实现了MVCC,虽然每个关系数据库实现不一样,但大都是实现了非阻塞的读 ...

  6. jQuery的on绑定click和直接绑定click区别

    状况之外 在之前的公司并没有遇到这个问题,也就没有深究.直到自己换了现在的公司,刚来第二天就开始写别人写到一半的项目,很无奈,不是原生就是jquery,由于项目急,已经来不及切换框架重新布局,只能继续 ...

  7. crontab 和 supervisor

    crontab linux系统自带的工具,可以做定时任务,最小间隔是1分钟 配置crontab 命令 如果是以root用户编辑的,那么最后运行也是以root用户运行脚本文件 crontab -e 命令 ...

  8. Python3.6中文文档 又来推荐一个,之前的Python3.52看得有点懵逼 https://www.rddoc.com/doc/Python/3.6.0/zh/

    https://www.rddoc.com/doc/Python/3.6.0/zh/    大家有空看下

  9. pwnable.kr blackjack之write up

    首先我们按提示找到源代码,看这一段: int betting() //Asks user amount to bet { printf("\n\nEnter Bet: $"); s ...

  10. Vijos 1308 埃及分数(迭代加深搜索)

    题意: 输入a.b, 求a/b 可以由多少个埃及分数组成. 埃及分数是形如1/a , a是自然数的分数. 如2/3 = 1/2 + 1/6, 但埃及分数中不允许有相同的 ,如不可以2/3 = 1/3 ...