Java脚本,调用 Java Applet 方法抛出 TypeError
Javascript, Calling Java Applet method throws TypeError
我有一个简单的小程序class:
package com.myapp;
class MyApplet extends Applet {
public String myMethod() {
return "Hello";
}
}
我已经将我的和其他 java classes 编译成 jarfile。然后我有 运行 这个 jar 文件主要 class 以确保正确创建 jar。有效。
然后我尝试将此 Applet 嵌入到我的页面中:
<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
returns 未定义
当我尝试这样称呼它时:
document.getElementById('MyApplet').myMethod();
它给我带来了这个:
Uncaught TypeError: document.getElementById(...).myMethod is not a function
我是不是漏掉了什么?
我已经测试过:
- Chrome 57.0.2987.133(64 位)
- Firefox 52.0.2(32 位)
小程序是使用JDK 8
编译的。
尝试
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>
此任务背后的主要问题是 最新版本的 Firefox、Chorme 和 Safari 不支持小程序,它们不会启动它们
仍然可以启动小程序的唯一浏览器是 Internet Explorer,它还需要被认为非常危险的显式权限。
我有一个简单的小程序class:
package com.myapp;
class MyApplet extends Applet {
public String myMethod() {
return "Hello";
}
}
我已经将我的和其他 java classes 编译成 jarfile。然后我有 运行 这个 jar 文件主要 class 以确保正确创建 jar。有效。
然后我尝试将此 Applet 嵌入到我的页面中:
<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
returns 未定义
当我尝试这样称呼它时:
document.getElementById('MyApplet').myMethod();
它给我带来了这个:
Uncaught TypeError: document.getElementById(...).myMethod is not a function
我是不是漏掉了什么?
我已经测试过:
- Chrome 57.0.2987.133(64 位)
- Firefox 52.0.2(32 位)
小程序是使用JDK 8
编译的。
尝试
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>
此任务背后的主要问题是 最新版本的 Firefox、Chorme 和 Safari 不支持小程序,它们不会启动它们
仍然可以启动小程序的唯一浏览器是 Internet Explorer,它还需要被认为非常危险的显式权限。