FBrowserCEF3Lib浏览器开发技术交流网址

 找回密码
 立即注册
查看: 2129|回复: 0

CEF3专辑-进阶篇-01-cefQuery的用法

[复制链接]

签到天数: 32 天

[LV.5]常住居民I

10

主题

34

回帖

554

积分

中级会员LV1

太阳月亮月亮星星

积分
554
发表于 2025-2-21 10:30:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
事情的起因是FB里面有个功能JS交互。我就在想CEF3如何实现的呢。就有以下的翻译
1、这是HTML/Java script要回调CEF3的代码
[JavaScript] 查看源码 复制代码
// The renderer-side router implementation exposes a query function and a cancel
// function via the JavaScript 'window' object:
//
//    // Create and send a new query.
//    var request_id = window.cefQuery({
//        request: 'my_request',
//        persistent: false,
//        onSuccess: function(response) {},
//        onFailure: function(error_code, error_message) {}
//    });
//
//    // Optionally cancel the query.
//    window.cefQueryCancel(request_id);

2、这里是是CEF3接受回调处的代码
[C++] 查看源码 复制代码
// 示例用法

//

// 1. 定义路由器配置。您可以选择指定设置

//,例如 JavaScript 函数名称。浏览器和渲染器进程中的配置必须相同。如果在同一个应用程序中使用多个路由器,请确保为每个路由器配置指定唯一的函数名称。

//

// // 显示默认值的示例配置对象。

// CefMessageRouterConfig config;

// config.js_query_function = "cefQuery";

// config.js_cancel_function = "cefQueryCancel";

//

// 2. 在浏览器进程中创建 CefMessageRouterBrowserSide 的实例。

// 例如,您可以选择使其成为 CefClient 实现的成员。

//

/ browser_side_router_ = CefMessageRouterBrowserSide::Create(config);

//

// 3. 注册一个或多个 Handler。Handler 实例必须比路由器存活时间长,或者在删除之前从路由器中移除。

//

// browser_side_router_->AddHandler(my_handler);

//

// 4. 从 CefClient 实现中的其他回调(OnBeforeClose 等)调用所有必需的 CefMessageRouterBrowserSide 方法。请参阅 CefMessageRouterBrowserSide 类文档以获取完整的方法列表。

//

// 5. 在渲染器进程中创建 CefMessageRouterRendererSide 实例。

// 例如,您可以选择将其作为 CefApp 实现的成员。

//

// renderer_side_router_ = CefMessageRouterRendererSide::Create(config);

//

// 6. 从 CefRenderProcessHandler 实现中的其他回调调用所有必需的 CefMessageRouterRendererSide 方法

//(OnContextCreated 等)。请参阅 CefMessageRouterRendererSide 类

// 文档以获取完整的方法列表。

//

// 7. 从 JavaScript 代码执行查询函数。

//

// window.cefQuery({request: 'my_request',

// persistent: false,

// onSuccess: function(response) { print(response); },

// onFailure: function(error_code, error_message) {} });

//

// 8. 处理 Handler::OnQuery 实现中的查询并立即或异步执行

// 适当的回调。

//

// void MyHandler::OnQuery(int64 query_id,

// CefRefPtr<CefBrowser> browser,

// CefRefPtr<CefFrame> frame,

// const CefString& request,

// bool persistent,

// CefRefPtr<Callback> callback) {

// if (request == "my_request") {

// callback->Continue("my_response");

// return true;

// }

// return false; // 未处理。

// }

//

// 9. 请注意,onSuccess 回调是在 JavaScript 中执行的。



///

/// 用于配置查询路由器。必须将相同的值传递给

/// CefMessageRouterBrowserSide 和 CefMessageRouterRendererSide。如果使用

/// 多个路由器对,请确保选择不冲突的值。

///


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们 在线手册 视频教程 赞助支持 CEF官网 易语言官网 火山开发官网
拒绝任何人以任何形式在本网站发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表本网站立场!

网址帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!

Archiver| 手机版| 小黑屋| 联系QQ:283987887 劰载中...

Powered by Discuz! X5.0 GMT+8, 2026-9-17 07:05 , Processed in 0.033841 second(s), 11 queries , Redis On.

 川公网安备51090302000262 蜀ICP备2023034329号
快速回复 返回顶部 返回列表