JavaFX学习笔记 —— WebView中正确与JavaScript交互的使用方法

JavaFX学习笔记 —— WebView中正确与JavaScript交互的使用方法

前言

最近在开发 FX 的项目,在学习使用WebView中,遇到了一些种种问题

  1. 关于如何加载本地html文件
  2. 关于如何与JavaScript交互

在这里插入图片描述

思考

根据网上各类教程关于如何加载 本地HTML文件的方式,部分都是采取URL读取到HTML文件

但是由于我使用Maven构建的项目,在项目根目录下拥有一个 resource文件夹存放html文件

光通过使用 class.getResource() 在测试环境下,是在test/java/src 中找资源文件
而这样我该如何不使用这种方式,拿到我项目根目录的 resource文件夹下的HTML文件呢?

分析

添加file:/// 头 带上本地项目路径即可

示例代码

        String dir = System.getProperty("user.dir").concat("/resource/"+ fileName + ".html");
        String prefix = "file:///";
        String path = prefix + dir;
        WebView webView = new WebView();
        WebEngine webEngine = webView.getEngine();
        webEngine.load(path);

即可!

如何和JavaScript正确交互

通过查阅资料显示

  • WebEngine.executeScript(String script) 与JavaScript进行交互

直接执行该行代码 可能 出现方法 not function

增加一条load事件,等待页面加载完毕之后再进行执行方法!

        webEngine.getLoadWorker().stateProperty().addListener(new ChangeListener<Worker.State>() {
            @Override
            public void changed(ObservableValue<? extends Worker.State> observable, Worker.State oldValue, Worker.State newValue) {
                if(newValue == Worker.State.SUCCEEDED){
                    Object obj = webEngine.executeScript("方法()");
                    System.out.println(obj);
                }
            }
        });

即可!

结束语

JavaFX学习笔记 —— WebView中正确与JavaScript交互的使用方法

  • 如果对你有帮助的话可以给我点赞收藏,十分感谢
  • 致力做学习笔记分享给大家
  • 可以转载 需标明 出处 本文链接。
  • 笔者一个开源项目:我的世界开服助手 希望大家可以点一下star

感谢你的观看。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaFX,可以使用WebView组件加载网页并与JavaScript进行交互。通过Java调用JavaScript可以使用WebEngine的executeScript方法来执行JavaScript代码。例如,使用以下代码可以调用JavaScript的jsMethod方法并传递数据: ```java WebEngine engine = webView.getEngine(); String callJsMethod = "jsMethod(data)"; Object result = engine.executeScript(callJsMethod); ``` 其,`jsMethod`是JavaScript方法名,`data`是要传递给该方法的数据。 另外,如果需要在JavaScript调用Java的方法,可以使用JavaScript的window对象来调用Java方法。例如,可以通过以下代码在JavaScript调用Java方法: ```javascript window.apps.callFromJs("ja"); ``` 其,`window.apps`表示Java对象,`callFromJs`是Java方法名,`"ja"`是传递给该方法的参数。 这样,Java和JavaScript之间就可以进行数据的传递和方法的调用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [JavaFX学习笔记 —— WebView正确JavaScript交互使用方法](https://blog.csdn.net/qq_33638188/article/details/126421159)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [JavaFx Webview 与js(vue)交互](https://blog.csdn.net/weixin_44517645/article/details/128180261)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值