Jcef 例子4_JCEF中js与java交互、js与java相互调用

createh55个月前 (02-01)技术教程35

调用jcef核心代码

CefMessageRouter msgRouter = CefMessageRouter.create(new CefMessageRouter.CefMessageRouterConfig(
"csh_Query",// 定义方法
"csh_QueryCancel"// 定义取消方法
));
// 向消息路由器添加一个处理器,第二个参数为true表示这个处理器是主处理器。
msgRouter.addHandler(new CshJcefJsBridgeHandlerDemo(), true);
// 将配置好的消息路由器添加到CEF客户端中,以便它可以开始处理来自JavaScript的调用。
client_.addMessageRouter(msgRouter);

CshJcefJsBridgeHandlerDemo

收到js调用,直接返回反转后的文字,并调用js弹出提示信息:

package com.virhuiai.JBCefBrowser.handler;

import org.cef.browser.CefBrowser;
import org.cef.browser.CefFrame;
import org.cef.callback.CefQueryCallback;
import org.cef.handler.CefMessageRouterHandlerAdapter;

public class CshJcefJsBridgeHandlerDemo extends CefMessageRouterHandlerAdapter {
    @Override
    public boolean onQuery(CefBrowser browser, CefFrame frame, long query_id, String request,
                           boolean persistent, CefQueryCallback callback) {

        // 返回影响成功的数据
        callback.success(new StringBuilder(request).reverse().toString());
        browser.executeJavaScript("alert('成功接收到js的调用')",null,1);// 调用js中定义的方法

        return true;

    }
}

html文件

核心就是调用:

window.csh_Query({...});// 方法名是在上面jcef中设置的,接着用jcef打开html文件。

启动后,根据url参数取得方法名,调用用之




    
    测试打开静态文件


    

测试sendMessage2Java

示例如图:


相关文章

Arduino通过串口透传ESP 13板与java程序交互

ESP 13 --- 是一个无线板子,配置通过热点通信Arduino通过串口透传ESP13板与java程序交互这个程序最基本的想法是用java把Arduino抽象出来,忙活了好几天,虽然没有达到最后的...

Java-IO流(Javaio流最快多少mb每秒上传)

目录1、流的概念和作用1.2、Java IO所采用的模型1.3、IO流的分类1.4、IO流特性1.5、IO流常用到的五类一接口1.6、Java IO流对象1.6.1、输入字节流InputStream1...

反向 Debug 了解一下?揭秘 Java DEBUG 的基本原理

作者:保险业务部 蒋信点赞再看,养成习惯Debug 的时候,都遇到过手速太快,直接跳过了自己想调试的方法、代码的时候吧……一旦跳过,可能就得重新执行一遍,准备数据、重新启动可能几分钟就过去了。好在ID...

利用 Jakarta EE 数据,提升企业级 Java 应用的数据集成效率

作者 | Otavio Santana译者 | 张卫滨策划 | 丁晓昀在不断发展的企业级 Java 应用中,高效的数据集成和持久化对于构建健壮和可扩展的系统至关重要。Jakarta Data 规范有助...