【问题标题】:Passing JS function to applet for as event listener将 JS 函数传递给小程序作为事件侦听器
【发布时间】:2010-09-12 16:50:26
【问题描述】:

是否可以将函数/回调从 javascript 传递到 java 小程序?

例如,我有一个带有按钮的小程序,当按下它时它将调用传递的 js 回调

function onCommand() {
  alert('Button pressed from applet');
}
applet.onCommand(onCommand);

【问题讨论】:

    标签: java javascript events applet


    【解决方案1】:

    ps。要使用 JSObject,您可能需要在 applet html 标记中包含“MAYSCRIPT”标记。

    【讨论】:

      【解决方案2】:

      我倾向于使用我从 this page 底部的反射示例中获得的东西,因为这样你就不需要干预你的类路径来编译它

      然后我只是在 applet 和 javascript 之间传递 JSON 字符串

      【讨论】:

        【解决方案3】:

        您可以使用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
             }
        }
        

        【讨论】:

        • 是否也可以将作为对象的js函数作为win.call的第一个参数传递而不是js函数的名称?
        • 不,但是您可以创建一个包含它的新对象,而不是传入裸回调函数,而是将其传入,然后使用 object.call(name) 表单。
        猜你喜欢
        • 2015-12-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-18
        • 2021-09-26
        • 2019-03-29
        相关资源
        最近更新 更多