从JavaScript调用Java函数
我试图使用JavaFX调用Java函数作为JavaScript的回调。 首先,我在初始化期间添加了Java类作为window的成员:从JavaScript调用Java函数,java,javascript,javafx-2,javafx,Java,Javascript,Javafx 2,Javafx,我试图使用JavaFX调用Java函数作为JavaScript的回调。 首先,我在初始化期间添加了Java类作为window的成员: JSObject jsobj = (JSObject) currentWebEngine.executeScript("window"); jsobj.setMember("java", this); Java请求函数在平台.runLater()中描述如下: 在javascript端完成异步请求后,它应该调用java函数来返回结果。然而,我在这方面有例外。我甚至
JSObject jsobj = (JSObject) currentWebEngine.executeScript("window");
jsobj.setMember("java", this);
Java请求函数在平台.runLater()中描述如下:
在javascript端完成异步请求后,它应该调用java函数来返回结果。然而,我在这方面有例外。我甚至尝试过在没有参数的情况下调用函数,但仍然不起作用:
window.java.returnResult();
但我有以下例外:
runnable中的异常
netscape.javascript.JSException:TypeError:“undefined”不是对象
它与异步请求无关,因为我甚至尝试在makeRequest()函数中直接调用它,但得到了相同的错误。
知道我在那方面做错了什么吗?
前面的代码集成在桌面JFrame应用程序中,而不是小程序中。使用DWR,您可以通过JavaScript使用java方法。我设法找到了问题的解决方案。以下代码调用得有点早,因此该类未在javascript中注册:
JSObject jsobj = (JSObject) currentWebEngine.executeScript("window");
jsobj.setMember("java", this);
我刚在web引擎的侦听器中调用了它,它就工作了。据我所知,DWR需要Java服务器与web浏览器通信。这不是我的目标。我有一个Swing桌面应用程序,它使用JavaFX嵌入了JavaScript。这个示例演示了WebView到Java回调的过程吗?
JSObject jsobj = (JSObject) currentWebEngine.executeScript("window");
jsobj.setMember("java", this);