将JS函数传递给applet作为事件侦听器
时间:2020-03-06 14:39:21 来源:igfitidea点击:
是否可以将函数/回调从javascript传递到Java applet?
例如,我有一个带有按钮的小程序,当按下该小程序时,它将调用传递的js回调
function onCommand() { alert('Button pressed from applet'); } applet.onCommand(onCommand);
解决方案
我们可以使用JSObject从Java回调到javascript。
在该页面上:
import netscape.javascript.*; import java.applet.*; import java.awt.*; class MyApplet extends Applet { public void init() { JSObject win = JSObject.getWindow(this); JSObject doc = (JSObject) win.getMember("document"); JSObject loc = (JSObject) doc.getMember("location"); String s = (String) loc.getMember("href"); // document.location.href win.call("f", null); // Call f() in HTML page } }
我倾向于使用从本页底部的反射示例派生的内容,因为那样我们就无需干预类路径来进行编译了。
然后我只是在applet和javascript之间传递JSON字符串
ps。要使用JSObject,我们可能需要在小程序html标记中包含" MAYSCRIPT"标记。