1

我需要从 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结束之前返回“响应”。

4

1 回答 1

0

您永远不会为您的 WebView 设置任何内容。你需要调用类似的东西

browser.getEngine().load(url)

或者

browser.getEngine().loadContent(html)

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

于 2015-12-27T17:35:54.560 回答