JavaFX WebView + Vue初始化加载数据解决方案

一般WebView加载Vue时,我们需要注入一些数据,而我发现当WebView加载完毕再注入脚本,Vue是无法正确识别注入的脚本函数,也无法正确获取所要注入的数据,因此可以采用以下方法解决Vue无法正确加载数据问题

1、配置WebView注入脚本,注入成功后执行页面startJavaObject函数

java 复制代码
        webView.getEngine().getLoadWorker().stateProperty().addListener((observableValue, state, t1) -> {
            if (t1 == Worker.State.SUCCEEDED) {
                JSObject window = (JSObject) webView.getEngine().executeScript("window");
                window.setMember("javaObject", new JavaObject());
                webView.getEngine().executeScript("startJavaObject()");
            }
        });
java 复制代码
@Slf4j
public class JavaObject {
    public void test(String s) {
        log.info(s);
    }

    public String getTopologyData(){
        return JSONUtil.toJsonStr(Arrays.asList("A","B","C"));
    }
}

2、html页面代码

通过钩子将Vue内部函数暴露,当注入Java脚本后,直接调用startJavaObject进行Vue内部数据初始化

注:本程序采用的是单个html文件进行开发的,功能单一,主要通过JavaFX实现数据采集,利用vis-network.js进行拓扑图绘制。

相关推荐
秋天爱美丽35 分钟前
css实现圆角+边框渐变+背景半透明
前端·css
jingfeng51439 分钟前
C++ STL-string类底层实现
前端·c++·算法
cyforkk1 小时前
Hexo 双分支部署指南:从原理到 Netlify 实战
前端
小小愿望1 小时前
前端读取与导出XLSX文件实战指南(React+Ant Design)
前端
小小愿望1 小时前
JavaScript生成随机数的全面指南:别再只会用Math.random()了!
前端
用户847181054192 小时前
wps加载项ribbon.js 与 ribbon.xml 的交互
前端
Jackson__2 小时前
RAG究竟是什么?一文搞懂大模型的记忆增强术
前端
雲墨款哥2 小时前
JS算法练习-Day10-判断单调数列
前端·javascript·算法
前端市界2 小时前
前端视角: PyQt6+Vue3 跨界开发实战
前端·qt·pyqt
阅文作家助手开发团队_山神2 小时前
第四章:Flutter自定义Engine本地依赖与打包流程
前端·flutter