2010-11-24 21 views
3

我有一個applet,啓動時間相當長,但是這是我的應用程序工作所需的。將javascript回調傳遞給使用deployJava部署的java applet

我用來註冊一個javascript回調函數:jsAppletIsStarted。 此回調在applet的啓動方法執行結束時被調用。

的代碼看起來或多或少是這樣的:

<script> 
var jsAppletIsStarted = function(){/*do some useful stuff*/}; 
</script> 
<applet id=".." etc> 
<param name="appletStartedCallBack" value="jsAppletIsStarted "/> 
</applet> 

和它的工作就像一個魅力。

我不得不切換到另一種方式來啓動小程序:使用deployJava.runApplet()方法。

現在,該代碼如下所示:

<script> 
    var jsAppletIsStarted = function(){/*do some useful stuff*/}; 

    var attributes = {}; 

attributes.code = "myAppletClass.class"; 
attributes.codebase="myCodeBase"; 

var parameters = {}; 
parameters.appletStartedCallBack="jsAppletIsStarted " ; 

var version = '1.6' ; 
deployJava.runApplet(attributes, parameters, version); 
    </script> 

而且回調沒有更多的認可。在我的Java控制檯中,我有以下錯誤。

12:26:24,655 ERROR com.mypackage.JavaScriptCallBack  - 
netscape.javascript.JSException: No such method "jsAppletIsStarted" on JavaScript object 
netscape.javascript.JSException: No such method "jsAppletIsStarted" on JavaScript object  
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 
com.mypackage.JavaScriptCallBack.callJsCallBack(JavaScriptCallBack.java:131) 
com.myapplet.MyApplet.start(MyApplet.java:662) at 
sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source) at 
java.lang.Thread.run(Unknown Source) 

有沒有一種方法將JavaScript回調作爲參數傳遞給使用deployJava.js的applet?

回答

0

請嘗試手動調用該功能。

getAppletContext().showDocument(new URL("javascript:jsAppletIsStarted()")); 
+0

可以在這種情況下工作,但我有其他的JavaScript函數傳遞,從中我需要得到返回值... showDocument不允許它,是嗎? – 2011-08-23 08:02:36