2008-09-24 79 views
4

是否可以將函數/回調從JavaScript傳遞給java小程序?將JS函數傳遞給作爲事件監聽器的小程序

,比如我有一個小程序,具有按鈕按下時,它會調用傳遞JS回調

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

回答

4

我傾向於使用我的東西從反射例如衍生在this page底部,與以往一樣,你不需要用你的classpath染指得到它來編譯

然後我只是通過小應用程序和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 
    } 
} 
+0

是否有可能傳遞作爲win.call的第一個參數的js函數而不是js函數的名稱? – ken 2008-09-24 11:46:20

+0

不,但不是傳入裸回調函數,而是創建一個包含它的新對象,然後使用object.call(name)形式傳遞它。 – moonshadow 2008-09-24 12:00:54

3

ps。要使用JSObject,您可能需要將「MAYSCRIPT」標記包含到applet html標記中。

相關問題