执行javascript并返回响应(JavaFX/Swing)

Execute javascript and return response (JavaFX/Swing)

本文关键字:JavaFX Swing 响应 javascript 返回 执行      更新时间:2023-09-26

我需要从java运行一个javascript函数,并将响应保存在一个变量中。我写了以下代码,但它不起作用:

public Object execute(String value) {
    SwingUtilities.invokeLater(() -> {
        new JFXPanel();
        Platform.runLater(() -> {
            WebView browser = new WebView();
            WebEngine webEngine = browser.getEngine();
            webEngine.setJavaScriptEnabled(true);
            Object response = webEngine.executeScript(value);
            Platform.exit();
        });
    });
    return response;
}

我之所以使用"WebView",是因为我的javascript代码使用了"window"、"document"等函数,而库作为"ScriptEngineManager"在我的情况下不起作用。

我该如何解决这个问题?我的代码可以工作,但在executeScript结束之前会返回"响应"。

您从未在WebView中设置任何内容。你需要调用类似的东西

browser.getEngine().load(url)

browser.getEngine().loadContent(html)

您需要至少提供一个最小的html页面才能访问JS对象,如窗口文档。在访问Javascript对象之前,您必须等待WebEngine的状态完成加载。