我有一个简单的Applet课程:

package com.myapp;

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


我已经将其他Java类编译到jarfile中。然后,我运行了这个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


我错过了什么?

我已经测试过:


Chrome 57.0.2987.133(64位)
Firefox 52.0.2(32位)


Applet是使用JDK 8编译的。

最佳答案

尝试

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


您可以通过getElementById获取元素

根据docs,您需要包括以下脚本来运行applet。

<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>

关于javascript - Javascript,调用Java Applet方法会引发TypeError,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43425809/

10-13 05:48