【问题标题】:Javascript, Calling Java Applet method throws TypeErrorJavascript,调用 Java Applet 方法抛出 TypeError
【发布时间】:2017-09-11 13:20:34
【问题描述】:

我有一个简单的 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 返回undefined

当我尝试这样称呼它时:

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

它向我抛出了这个:

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

我错过了什么吗?

我已经对此进行了测试:

  1. Chrome 57.0.2987.133(64 位)
  2. Firefox 52.0.2(32 位)

Applet 是使用 JDK 8 编译的。

【问题讨论】:

标签: javascript java applet


【解决方案1】:

试试

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

你可以通过getElementById抓取元素

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

【讨论】:

  • 我收到了Uncaught TypeError: document.getElementById(...).myMethod is not a function 错误。我需要在浏览器中开启某些功能吗?
  • 您确定路径吗?试试archive="./myjar.jar"
  • 仍然抛出同样的错误。即使我将它们设置为 100,我在浏览器中的小程序的宽度和高度也为零,这与我的错误有关吗?
  • 宽度和高度即使 0 仍然在 DOM 中.. 你可以试试console.log(document.getElementById('MyApplet'))
【解决方案2】:

这项任务背后的主要问题是最新版本的 Firefox、Chorme 和 Safari 不支持小程序并且它们不会启动它们

仍然可以启动小程序的唯一浏览器是 Internet Explorer,它还需要显式权限,这被认为是非常危险的。

【讨论】:

    猜你喜欢
    • 2015-03-18
    • 1970-01-01
    • 2012-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多