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

createh52个月前 (02-01)技术教程10

调用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

示例如图:


相关文章

java 整合jsch使用 远程交互服务器

#头条创作挑战赛#背景java 通过jsch 远程执行命令 jsch 主要是类似Xshell 只不过是代码级别使用,而 Xshell使用界面化jsch可以执行任何shell 脚本,但是弊端是执行一次必...

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

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

Java业务系统是怎么和MySQL交互的?

很多crud boy眼中的数据库:但使用MySQL时,总会遇到各种烦人问题,什么偶尔死锁、性能丢人、各种异常报错。一般人都会Google博客,尝试解决问题,最后虽然是解决了问题,但可能也没搞懂背后原理...

Java 24 功能已冻结,进入 Rampdown 第二阶段

作者 | Tim Anderson 译者 | 王强 策划 | TinaOracle 的 Java 平台首席架构师 Mark Reinhold 宣布 JDK 24 已处于 Rampdown 第二阶段,这...

Spring AI来了,Java开发者福音(spring ui)

Spring AI来了,Java生态接入LLM大模型变得更加简单!SpringAI今天官宣Spring AI已经上架到Spring Initializr 上,它提供了一种更简洁的方式和AI交互,减轻J...

Java的多种Http调用方式(java中http协议)

在Java中,HTTP请求通常用于客户端与Web服务器之间的数据交换,常见的场景包括API调用、网页浏览以及服务间通信等。Java提供了多种库来处理HTTP请求,其中最为广泛的是java.net包和第...