我需要从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
结束之前返回“响应”。
答案 0 :(得分:0)
您永远不会为WebView设置任何内容。你需要打电话给
browser.getEngine().load(url)
或
browser.getEngine().loadContent(html)
您需要提供至少一个最小的html页面才能访问JS对象,如 window 或 document 。在访问Javascript对象之前,您必须等待WebEngine的状态完成加载。