我正在尝试使用 JavaFX 调用 Java 函数作为来自 JavaScript 的回调。首先,我在初始化期间将 Java 类添加为 window 的成员:
JSObject jsobj = (JSObject) currentWebEngine.executeScript("window");
jsobj.setMember("java", this);
Java请求函数在内部描述如下Platform.runLater()
:
String script = "document.makeRequest('"+inputString+"')";
currentWebEngine.executeScript(script);
在javascript端完成异步请求后,应该调用java函数返回结果。但是,我在这方面遇到了例外。我什至尝试调用不带参数的函数,但仍然无法正常工作:
window.java.returnResult();
但我得到以下异常:
可运行的 netscape.javascript.JSException 中的异常:TypeError:“未定义”不是对象
它与异步请求无关,因为我什至尝试在 makeRequest() 函数中直接调用它并得到相同的错误。知道我在那个领域做错了什么吗?前面的代码集成在 Desktop JFrame 应用程序中,而不是小程序中。