从Java脚本调用Applet函数

问题描述:

每次我从我的Java脚本调用我的applet函数时,它都会引发一个未定义的异常。 而我的谷歌搜索并没有帮助我。从Java脚本调用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(); 
    } 

我知道它把这个小程序,因为我可以看到鬼,如果它帮助这里是我的初始化函数

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文件夹,但我目前正在访问它作为本地文件。

+0

err.description返回“未定义”, getGreating()返回一个字符串“Hello” 我也问过8个问题,其中只有1有一个答案,这是该问题的解决方案,虽然一些的其他人确实导致了一个解决方案,所以我回去接受了这些。 – 2011-03-20 22:10:30

+0

我认为document.ClientApp正在返回undefined?你有没有试过通过ID访问?我很习惯通过document.getElementById('appId')。getGreeting()来访问applet。 – j*over 2011-03-20 22:49:34

+0

在小程序或JavaScript部分中是否发生异常?如果第一个,在那里添加一个'ex.printStackTrace()',这会给出更多的信息。 – 2011-03-20 22:54:43

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

“这个属性的名称包含applet的状态的序列化表示的资源。” 我预测这不是你想要的。另外,如果您使用的是Firefox,则需要(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的哪些部分要使用,哪些不适用。

+0

我已更新的问题,并纳入您的建议。 当我调用getGreeting()函数 – 2011-03-22 15:05:17

+0

时,我仍然收到未定义的错误,第一次没有足够透彻地阅读JavaScript代码。您正在使用覆盖文档i.d.内容的document.write,该对象被删除。请尝试使用console.log。 – 2011-03-22 22:50:16

+0

你是我的英雄!!!!! 这一直在窃听我3天! 我是新来的Java脚本,并没有意识到,一旦你开始写一个文件,你失去了当前的文件! – 2011-03-23 00:20:10