2017-04-15 27 views
1

我有一個簡單的Applet類:的Javascript,調用Java小程序方法引發TypeError

package com.myapp; 

class MyApplet extends Applet { 
    public String myMethod() { 
     return "Hello"; 
    } 
} 

我編我與其他我的Java類成jar文件。然後我運行這個jar文件的主類來確保jar被正確創建。有用。

然後我嘗試這個小程序嵌入到我的網頁:

<script type="application/javascript"> 
    $(document).ready(function() { 
     console.log(document.MyApplet.myMethod()) 
    }); 
</script> 

<applet archive="myjar.jar" code="com.myapp.MyApplet.class" id="MyApplet" name="MyApplet" width=100 height=100></applet> 

這引發了我這個錯誤:

Uncaught TypeError: Cannot read property 'myMethod' of undefined 

這意味着document.MyApplet回報不確定

當我嘗試這樣稱呼它:

document.getElementById('MyApplet').myMethod(); 

它拋出我:

Uncaught TypeError: document.getElementById(...).myMethod is not a function 

我錯過了什麼?

我已經在測試此:

  1. 鉻57.0.2987.133(64位)
  2. 火狐52.0.2(32位)

小程序通過使用​​編譯。

+0

你試過這個嗎?http://stackoverflow.com/questions/11536455/calling-java-method-in-javascript –

+0

@MohamedAbbas這個答案是關於製作ajax請求,它沒有連接到我的quesion。 –

+0

已更新的答案.. –

回答

0

這個任務背後的主要問題是,去年火狐,Chorme和Safari瀏覽器的版本不支持小程序,它們不會啓動這些

這仍然是可以啓動applets的惟一瀏覽器是互聯網Explorer,它也需要明確的權限,這被認爲是非常危險的。

0

嘗試

console.log(document.getElementById('MyApplet').myMethod()) 

您可以通過getElementById

搶要素根據需要包含以下腳本運行applet的docs

<script src= 
    "https://www.java.com/js/deployJava.js"></script> 
<script> 
    <!-- applet id can be used to get a reference to 
    the applet object --> 
    var attributes = { id:'MyApplet', 
     code:'jcom.myapp.MyApplet.class', width:1, height:1} ; 
    var parameters = { jnlp_href: 'MyApplet.jnlp'} ; 
    deployJava.runApplet(attributes, parameters, '1.6'); 
</script> 
+0

我收到了'Uncaught TypeError:document.getElementById(...)。myMethod不是函數錯誤。我是否需要在瀏覽器中打開某些內容? –

+0

嗯..剛剛發現http://stackoverflow.com/questions/7278626/javascript-to-java-applet-communication –

+0

我試過了。仍然不起作用。 –

相關問題