每当我从Java Script调用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();
}
我知道它会加载applet,因为我可以看到gui,如果它有帮助,这里是我的初始化函数
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 :(得分:3)
从http://www.w3.org/TR/html401/struct/objects.html#h-13.4开始,关于对象属性:
“此属性命名包含applet状态的序列化表示形式的资源。” 我预测这不是你想要的。
此外,如果您使用的是firefox mac,则需要mayscript param(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部分以及哪些部分不能使用。