2011-03-20 108 views
2

每次我從我的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。 – jbrookover 2011-03-20 22:49:34

+0

在小程序或JavaScript部分中是否發生異常?如果第一個,在那裏添加一個'ex.printStackTrace()',這會給出更多的信息。 – 2011-03-20 22:54:43

回答

3

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