马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
事情的起因是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。如果使用
/// 多个路由器对,请确保选择不冲突的值。
///
|