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

标签 javascript java javafx webview webengine

我需要从 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”等函数以及库,因为“ScriptEngineManage”在我的情况下不起作用。

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

最佳答案

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

browser.getEngine().load(url)

browser.getEngine().loadContent(html)

您需要至少提供一个最小的 html 页面才能访问 JS 对象,例如 windowdocument。并且您必须等待 WebEngine 的状态完成加载才能访问 Javascript 对象。

关于javascript - 执行 javascript 并返回响应 (JavaFX/Swing),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34476450/

相关文章:

java - 对抓取 HTML 标签正则表达式模式感到困惑

javafx - 尝试使用 JavaFX Gridpane 推断鼠标拖动的位置

javascript - 匹配带逗号或不带逗号的行

javascript - Nodejs等待用户输入?

java - 将 SXSSF 保存为 .xls 文件

java - 如何将 java.util.Optional 映射到 jersey 客户端

JavaFX Java 11 及更高版本

JavaFX - 按钮切换到错误的场景

javascript - 在新选项卡中打开网址而不弹出浏览器

javascript - 使用新标题重新加载 html 页面