我无法让 Java Applet 与托管该 applet 的页面上的 Javascript 代码进行通信。它有时会工作,但有时会抛出一个模糊的异常,谷歌搜索没有找到任何有用的信息,除了一些从 Unresolved Java 错误报告(感谢 Sun)。
这是我使用的代码:
JSObject win = JSObject.getWindow(this);
Object[] args = new Object[1];
args[0] = "test argument";
String result = (String) win.call("testJSfunc", args); // XXX
这是我在标记为//XXX 的行中得到的异常。请注意,它是间歇性的。它通常有效,但有时无效,使用完全相同的代码。反复重新加载页面会很快产生错误。
netscape.javascript.JSException: No registered plugin for applet ID 1
at sun.plugin2.main.client.MessagePassingJSObject.newJSException(Unknown Source)
at sun.plugin2.main.client.MessagePassingJSObject.waitForReply(Unknown Source)
at sun.plugin2.main.client.MessagePassingJSObject.call(Unknown Source)
at TestApplet.testCallJS(TestApplet.java:159)
at TestApplet.init(TestApplet.java:139)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
我应该使用另一种更稳定的 Java 和 Javascript 通信方式吗?
--- 更多信息 ---
我正在使用 Sun 提供的 deployJava.js 脚本来动态嵌入小程序。我确保启用了 MAYSCRIPT。我知道这不是 MAYSCRIPT 的问题,因为有时通信是有效的。
最佳答案
确保你的 applet 标签中有 MAYSCRIPT。
<applet id="..." code="..." name=".." codebase="..." archive="..." width="100%" height="100%" MAYSCRIPT>
关于java - Java Applet <--> Javascript 通信问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2495129/