从小程序调用javascript方法时出错 [英] Error when calling javascript method from applet
本文介绍了从小程序调用javascript方法时出错的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试使用 netscapte.java.JSObject
从 Applet 调用 javascript 方法.
在小程序中:
JSObject window = JSObject.getWindow(this.Class);Object[] args = ....//参数window.call("javascriptMethodName", args);
但我在 window.call 得到异常:
<前>调用callFromJava"时出现 JavaScript 错误netscape.javascript.JSException:调用callFromJava"时出现 JavaScript 错误在 sun.plugin2.main.client.MessagePassingJSObject.newJSException(未知来源)在 sun.plugin2.main.client.MessagePassingJSObject.waitForReply(来源不明)在 sun.plugin2.main.client.MessagePassingJSObject.call(来源不明)在 TextBoxApplet.jButton1_actionPerformed(TextBoxApplet.java:57)在 TextBoxApplet.access$000(TextBoxApplet.java:16)在 TextBoxApplet$1.actionPerformed(TextBoxApplet.java:36)在 javax.swing.AbstractButton.fireActionPerformed(来源不明)在 javax.swing.AbstractButton$Handler.actionPerformed(来源不明)在 javax.swing.DefaultButtonModel.fireActionPerformed(来源不明)在 javax.swing.DefaultButtonModel.setPressed(未知来源)在 javax.swing.plaf.basic.BasicButtonListener.mouseReleased(来源不明)在 java.awt.Component.processMouseEvent(Unknown Source)在 javax.swing.JComponent.processMouseEvent(来源不明)在 java.awt.Component.processEvent(来源不明)在 java.awt.Container.processEvent(来源不明)在 java.awt.Component.dispatchEventImpl(未知来源)在 java.awt.Container.dispatchEventImpl(未知来源)在 java.awt.Component.dispatchEvent(来源不明)在 java.awt.LightweightDispatcher.retargetMouseEvent(来源不明)在 java.awt.LightweightDispatcher.processMouseEvent(来源不明)在 java.awt.LightweightDispatcher.dispatchEvent(来源不明)在 java.awt.Container.dispatchEventImpl(未知来源)在 java.awt.Component.dispatchEvent(来源不明)在 java.awt.EventQueue.dispatchEvent(来源不明)在 java.awt.EventDispatchThread.pumpOneEventForFilters(来源不明)在 java.awt.EventDispatchThread.pumpEventsForFilter(来源不明)在 java.awt.EventDispatchThread.pumpEventsForHierarchy(来源不明)在 java.awt.EventDispatchThread.pumpEvents(来源不明)在 java.awt.EventDispatchThread.pumpEvents(来源不明)在 java.awt.EventDispatchThread.run(未知来源)JSObject
不是 null
.有没有人遇到过这个?非常感谢.
解决方案
我做了一个快速测试,我的发现与 musicfreak 的评论.
使用以下小程序:
public class MyClass extends JApplet {公共无效初始化(){JSObject 窗口 = JSObject.getWindow(this);Object[] args = new String[] { "bar" };window.call("foo", args);}}
和以下标记(注意错误的 JavaScript - 在我传递的 bar
参数中没有 baz
方法):
<头><title>MyAppletTest</title>头部><身体><script type="text/javascript">函数 foo(bar) { bar.baz();}<applet 代码="MyApplet.class"></applet>