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

时间:2015-12-27 00:10:57

标签: 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结束之前返回“响应”。

1 个答案:

答案 0 :(得分:0)

您永远不会为WebView设置任何内容。你需要打电话给

browser.getEngine().load(url)

browser.getEngine().loadContent(html)

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