【问题标题】:Execute javascript and return response (JavaFX/Swing)执行 javascript 并返回响应 (JavaFX/Swing)
【发布时间】:2015-12-27 00:10:57
【问题描述】:

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

【问题讨论】:

  • 如何确定在脚本完成之前得到结果?查看value 的内容也将有所帮助,这是执行的脚本。

标签: javascript java javafx webview webengine


【解决方案1】:

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

browser.getEngine().load(url)

browser.getEngine().loadContent(html)

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-12
    • 1970-01-01
    • 2020-03-18
    • 1970-01-01
    • 2010-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多