我需要从 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 对象,例如 window 或 document。并且您必须等待 WebEngine 的状态完成加载才能访问 Javascript 对象。
关于javascript - 执行 javascript 并返回响应 (JavaFX/Swing),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34476450/