2010-11-24 57 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