zl程序教程

您现在的位置是:首页 >  其他

当前栏目

Chromium Embedded Framework中文文档之(基本使用)

中文文档 基本 Framework chromium Embedded 使用
2023-09-27 14:27:57 时间

使用CEF便捷的创建一个全功能的内建浏览器如下所示:

// Define an instance of our CefHandler implementation. Various methods in the MyHandler // instance will be called to customize browser behavior. CefRefPtr CefHandler handler(new MyHandler()); // Provide information about the parent window, client rectangle, etc. CefWindowInfo info = {...}; // Create the new browser window object, which eventually results in a call to // MyHandler::HandleAfterCreated(). CefBrowser::CreateBrowser(info, false, handler, L"http://www.google.com");

在tests目录下有一个客户端程序的示例,叫cefclient。

文件结构

CEF资料库结构如下:


浏览器通知

浏览器通知是通过注册的委托接口由浏览器发到客户端程序的通知, CefHandler是最主要的委托接口, CefJSHandler则用于实现自定义的Javascript对象。

CefHandler支持以下接口:

窗口创建之前 (HandleBeforeCreated),客户端可用之取消与定制浏览器窗口创建过程。 窗口创建之后(HandleAfterCreated). 可用于创建自定义的CefJSHandler对象。 地址栏更新(HandleAddressChange). 将地址栏更改为指定的字符串,通知发生于导航提交后与页面加载前。 标题更新(HandleTitleChange). 将标题更改为指定的字符串,发生在页面加载中。 浏览前(HandleBeforeBrowse). 可用于取消导航,该事件的信息包括URL,Post数据,请求头. 开始加载(HandleLoadStart).  加载结束 (HandleLoadEnd).  加载错误(HandleLoadError). 加载过程中遇到错误,应用程序可提供自定义的错误页面. 资源加载前 (HandleBeforeResourceLoad). 应用程序可提供替代的数据源 (比如内存中的缓存)或者取消加载. 显示菜单前(HandleBeforeMenu). 可用于取消上下文菜单显示或定制菜单,默认情况下,浏览器根据上下文显示基本的菜单. 获取菜单标签(HandleGetMenuLabel).在默认菜单显示前,每个菜单项调用一次,可用于将英文默认内容改为其它语言. 菜单动作(HandleMenuAction). 用户从默认上下文菜单选择了一个选项,可用自己的方式来处理动作。 打印选项(HandlePrintOptions). 打印设置对话框显示前调用,可用于定制页面大小、方向与边距等. 打印页眉页脚 (HandlePrintHeaderFooter). 在页面视图输出到打印上下文,但是页面结束前,可在预定义的6个位置(上左、上中、上右、下左,下中,下右)插入自定义的页眉、页脚字符串。该事件附带的信息包括当前URL、标题、页码、总页数、打印上下文、页边距与DPI拉伸比. JavaScript警告 (HandleJSAlert). 应用程序可自定义Javascript Alert窗口. JavaScrip确认 (HandleJSConfirm). 应用程序可自定义Javascript Comfirm窗口 JavaScrip提示 (HandleJSPrompt). 应用程序可自定义Javascript Prompt窗口 JavaScript Window 对象绑定 (HandleJSBinding). 应用程序将用户定义的方法和变量附加到frame的window对象上 Window关闭前 (HandleBeforeWindowClose). 窗口关闭前 获得焦点(HandleTakeFocus). 浏览器组件失去焦点前调用 设置焦点(HandleSetFocus). 浏览器组件请求焦点前调用 键盘事件(HandleKeyEvent). 浏览器组件接收到键盘事件时 提示 (HandleTooltip). 用于修改tooltip文字 控制台消息 (HandleConsoleMessage). 用于显示控制台消息. 查询结果(HandleFindResult).用于自定义查找结果显示处理

CefV8Handler支持以下通知:

执行事件(Execute). 应用程序执行指定的函数,该事件提供所有的Javascript参数,而且应用程序能指定返回值 浏览器事件

浏览器事件由客户端应用程序通过CefBrowser和CefFrame的函数发送给浏览器:

后退、前进、重新加载与停止加载,用于控制浏览器导航. 撤消、重做、剪切、复制、粘贴、删除、全选,用于控制目标区域内容. 打印. 打印目标框架. 查看源代码. 将目标框架的HTML源代码保存到临时文件,并用默认的文本查看程序打开之 加载URL. 在指定框架中加载指定URL 载入字符串. 根据一个假URL在指定框架中加载某个字符串 加载流. 根据一个假URL,在指定框架中加载二进制数据 加载请求. 在指定框架中加载请求(URL, method, request data 与 headers) . 执行脚本. 在目标框架中执行任意Javascript命令
内嵌 NPAPI 插件

CEF支持创建Netscape-style内嵌插件,使用相同 NPAPI的内嵌插件和标准的DLL插件行为相同,但是,相对于使用独立的DLL,内嵌插件由容器应用程序创建,并通过调用CefRegisterPlugin()注册到系统,如果要直接使用这一功能,需要include cef_nplugin.h .

JavaScript扩展

CEF支持可以和原生应用程序代码交互的Javascript扩展,参见cef.h的CefRegisterExtension() 函数和cefclient示例程序的"JavaScript Extension Handler" 以及 "UI App Example" 测试 .

自定义Schemes

CEF支持注册与处理自定义scheme,类似于myscheme://mydomain。参见cef.h中的CefRegisterScheme()函数与示例应用程序cefclient中的 "Scheme Handler" 测试.

框架实现概览

CEF所有的类以Cef为前缀.

框架准备与拆卸

UI消息循环由框架创建的一个单独线程处理,客户端程序应负责通过分别调用CefInitialize()和CefShutdown() 来为每个进程准备与关闭这一线程。

引用计数

所有实现了CefBase接口的框架类与对象指针都由CefRefPtr智能指针实现来处理,通过调用AddRef()和Release()自动处理引用计数。

平台无关

CEF框架被设计成平台无关,需要当前我们仅支持windows平台,但是我们计划将来支持其它平台。为了尽可能减少双平台支持带来的麻烦,框架定义了一系列实现无关的接口与类型定义包装跨平台的行为。

线程安全

框架的所有接口实现必须是跨线程访问安全的,CefThreadSafeBase 模版提供原子的AddRef() 和 Release() 实现,还提供Lock() 和 Unlock()方法以同步方式访问代码块.

框架接口

框架定义了如下接口:


CefBrowser 是主要的浏览器host类,通过它的静态方法CefBrowser::CreateBrowser()方法创建新浏览器窗口. CefFrame 表示浏览器窗口里的一个框架(frame),每个浏览器窗口都有一个顶级的主框架,可通过CefBrowser::GetMainFrame()方法访问之. CefHandler 是传给CefBrowser::CreateBrowser()方法的最主要委托接口. CefRequest 表示请求数据,比如url, method, post data 和 headers. CefPostData 和 CefPostDataElement 表示可能是请求一部分的post数据. CefSchemeHandlerFactory 和 CefSchemeHandler 用于处理像myscheme://mydomain这样的自定义scheme. CefStreamReader, CefStreamWriter, CefReadHandler 和 CefWriteHandler 读写数据的简单的接口. CefV8Handler 和 CefV8Value 用于创建和访问Javascript对象.
珠联壁合地设天造|M1 Mac os(Apple Silicon)基于vscode(arm64)配置搭建Java开发环境(集成web框架Springboot) 也许有人从未听说过Python,但是不会有人没听说过Java,它作为一个拥有悠久历史的老牌编程语言,常年雄踞TIOBE编程语言榜首,其顶尖的霸主地位不可撼动,而M1 mac业已发布了一段时间,作为跨时代的顶级芯片系统,这两大巨头能否珠联璧合,让开发者们猛虎添翼、更上层楼?本次我们尝试在M1 mac系统中搭建Java开发环境,并且集成目前Web开发领域红的发紫的Springboot框架,另外,谁说玩儿Java就必须得用Eclipse或者IntelliJ IDEA?我们就骄傲地使用Vscode。
Typecho Framework简介 Typecho Framework是SegmentFault所用的框架,由创始人joyqi亲手打造。joyqi也是国内知名博客平台Typecho的作者。
2D开发工具包揭秘:DOTween Pro入门教程 今天为大家介绍2D开发工具包中的DOTween Pro插件。DOTween是一款针对Unity的快速高效、类型安全的面向对象的补间动画引擎,并且对于C#用户做出了很多的优化。 DOTween 有哪些优秀的特性?兼顾速度与效率:DOTween不仅非常快,而且非常高效。
Visual Studio 2015 和 Apache Cordova 跨平台开发入门 原文:Visual Studio 2015 和 Apache Cordova 跨平台开发入门(一) 基于 Windows 10 的 Visual Studio 2015 跨平台的应用开发主要分为基于Visual Studio 安装 Xamarin 扩展的跨Android、iOS 和 Windows的...
1.版本要求,Visual Studio需求2015或2017 2.在安装的之后勾选 JavaScript应用之Apache Cordova 以及所依赖的工具就可以了。