CEF3开发者系列之类和接口
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开发者系列之类和接口的更多相关文章
- CEF3开发者系列之CefEnableHighDPISupport详解
在CEF3中,CefEnableHighDPISupport()这个接口函数在使用时一般不为人所注意,但是如果稍有不慎,会造成打开的网页不能填满窗口的问题.如果是需要flash插件才能运行的游戏.则会 ...
- CEF3开发者系列之JS与C++交互之二
本文翻译自JavaScriptIntegration (https://bitbucket.org/chromiumembedded/cef/wiki/JavaScriptIntegration).本 ...
- CEF3开发者系列之进程间消息传递
在使用CEF3作为框架开发过程中,实现WebSockets.XMLHttpRequest.JS与本地客户端交互等功能时,需要在渲染(Render)进程和浏览(Browser)进程中传递消息.CEF3在 ...
- CEF3开发者系列之工程和代码结构
CEF支持一系列的编程语言和操作系统,并且能很容易地整合到新的或已有的工程中去.它的设计思想就是易用且兼顾性能. CEF3支持一系列的编程语言和操作系统,并且能很容易地整合到新的或已有的工程中去.它的 ...
- CEF3开发者系列之CEF3入门
CEF全称Chromium Embedded Framework,是一个基于Google Chromium 的开源项目.Google Chromium项目主要是为Google Chrome应用开发的, ...
- CEF3开发者系列之Cookies管理和共享
涉及网页登录相关的技术,Cookies肯定是忽略不了的.由于项目的需要,要做一个双核的产品.双核间切换会涉及到登录状态的问题,共享Cookies是一个很好的方案.既然涉及到共享cookies,那么读取 ...
- CEF3开发者系列之Cookies管理和共享<转>
原帖地址:https://www.cnblogs.com/guolixiucai/p/6994559.html 涉及网页登录相关的技术,Cookies肯定是忽略不了的.由于项目的需要,要做一个双核的产 ...
- CEF3开发者系列之外篇——IE中JS与C++交互
使用IE内核开发客户端产品,系统和前端页面之间的交互,通常给开发和维护带来很大的便利性.但操作系统和前端之间的交互却是比较复杂的.具体来说就是脚本语言和编译语言的交互.在IE内核中html和css虽然 ...
- CEF3开发者系列之JS与C++交互之一
JS与Native交互是相对于比较困难的技术,在学习这门技术之前,我们先了解下浏览器内核中的JS引擎与chromium内核的V8引擎相关知识.在浏览器应用中,JS与本地代码互相调用,得益于浏览器内核对 ...
随机推荐
- Yii2.0 实现的短信发送
原文地址:http://www.phpxs.com/post/4245/ yii2-smserGithub项目主页 https://github.com/daixianceng/yii2-smser ...
- RPC-远程过程调用协议
远程过程调用协议 同义词 RPC一般指远程过程调用协议 RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要 ...
- R语言学习笔记
向量化的函数 向量化的函数 ifelse/which/where/any/all/cumsum/cumprod/对于矩阵而言,可以使用rowSums/colSums.对于“穷举所有组合问题" ...
- 2015年12月01日 GitHub入门学习(二)手把手教你Git安装
序:Mac与Linux中,Mac都预装了Git,各版本的Linux也都提供了Git的软件包.下面手把手教你Windows下的安装. 一.Git Windows GUI 下载地址 msysgit htt ...
- 如何申请https证书、搭建https网站
如何申请https证书.搭建https网站 随着国内搜索引擎巨头百度启用全站https加密服务,全国掀起了网站https加密浪潮.越来越多的站点希望通过部署https证书来解决“第三方”对用户隐私的嗅 ...
- IOS开发之----NSDictionary,JSON和XML互相转换
本文永久地址为 http://www.cnblogs.com/ChenYilong/p/4044521.html,转载请注明出处. -(void)test { //XML文本范例 ...
- 面试集锦-常量,const, const 对指针的影响
在C语言中不可改变的数据(量)就是常量 在C语言中有三种常量 字面量(直接量),就是直接写出来的,从写法上就可以看出值与类型等,例如:19,123.456等 名字常量 ...
- #define 中#和##的作用
#的作用是把后面的参数变成一个字符串. 如,#define f(a) #a f(hello world)相当于"hello world": ##的作用是把两个字符串连接起来. 如, ...
- Ruby类的继承
Ruby继承的语法 class DerivedClass < BaseClass #some stuff end < 为继承符号 重写(override) 的概念 有时, 我们希望子类从父 ...
- BZOJ2243——[SDOI2011]染色
1.题目大意:给个树,然后树上每个点都有颜色,然后会有路径的修改,有个询问,询问一条路径上的颜色分成了几段 2.分析:首先这个修改是树剖可以做的,对吧,但是这个分成了几段怎么搞呢,我们的树剖的不是要建 ...