从Javascript调用Applet函数

时间:2011-03-20 19:52:27

标签: java javascript html applet

每当我从Java Script调用applet的函数时,它都会抛出一个未定义的异常。 而我的谷歌搜索根本没有帮助我。

这是我现在正在托管的网站的链接: Host Site

这是我嵌入Applet的html:

<object type="application/x-java-applet" 
            id="ClientApp" name="ClientApp" 
            archive="Cal.jar" 
            width="100" height="100">
        <param name="code"      value="Calendar_Algorithm" />
        <param name="mayscript" value="true" />
   </object>

这是我的java脚本代码:

function test(){
        document.writeln("<p> "+"Test"+" </p>");
        try{
            var s=document.ClientApp.getGreeting();
            document.writeln("<p> First: "+s+" </p>");

        }catch(err){
            document.writeln("<p>Error Caught 1: "+err.description+"</p>");
        }


        try{
            var s=document.getElementById('ClientApp').getGreeting();
            document.writeln("<p> Second: "+s+" </p>");

        }catch(err){
            document.writeln("<p>Error Caught 2: "+err.description+"</p>");
        }


        document.close();
    }

我知道它会加载applet,因为我可以看到gui,如果它有帮助,这里是我的初始化函数

public void init() {

        try {
            SwingUtilities.invokeAndWait(new Runnable() {
                public void run() {
                    JLabel lbl = new JLabel(getGreeting());
                    add(lbl);
                }
            });
        } catch (Exception e) {
            System.err.println("createGUI didn't complete successfully");
        }
    }

此处是指向我的完整代码Code

的链接

我感觉这个错误非常明显,但我看不到它。

任何帮助都会很棒!

P.S。 Applet类文件现在位于已签名的jar文件中。

此外,它将被放置在tomcat服务器的webapps文件夹中,但我目前正在将其作为本地文件访问。

1 个答案:

答案 0 :(得分:3)

http://www.w3.org/TR/html401/struct/objects.html#h-13.4开始,关于对象属性:

“此属性命名包含applet状态的序列化表示形式的资源。” 我预测这不是你想要的。

此外,如果您使用的是firefox mac,则需要mayscript param(JS-2-Java交互)LiveConnect才能工作。

部署有效的小程序的方法:

<object type="application/x-java-applet" width="100" height="100">
  <param name="codebase"  value="/applet_dir" />
  <param name="code"      value="Calendar_Algorithm" />
  <param name="mayscript" value="true" />
</applet>

如果您没有启用Java控制台,那么您肯定应该这样做。它是在Java控制面板高级设置下启用的。

顺便说一下,在Chrome Linux中它可以运行!在Firefox Linux中它没有。 Firefox不喜欢指定对象和代码参数,并且类名不同。

LiveConnect有问题,特别是在mac上。有关概述,请查看:applets-missing-information-about-liveconnect-and-deployment基本上您需要知道要使用哪些LiveConnect部分以及哪些部分不能使用。