我已将以下applet标记转换为对象标记,以便它可以正常工作。但由于某种原因,以下不起作用。首先,以下是否应该有效?
小程序:
document.writeln('<applet');
document.writeln(' code="LittleShootApplet"');
document.writeln(' id="LittleShootApplet" name="LittleShootApplet"');
document.writeln(' scriptable="true"');
document.writeln(' mayscript="true"');
document.writeln(' height="0" width="0"');
document.writeln(' style="xdisplay: none; width:0; height:0; padding:0; margin:0;" >');
document.writeln('</applet>');
对象:
document.writeln('<OBJECT ');
document.writeln('classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" width="0" height="0">');
document.writeln('<PARAM name="code" value="LittleShootApplet">');
document.writeln('<PARAM name="id" value="LittleShootApplet">');
document.writeln('<PARAM name="scriptable" value="true">');
document.writeln('<PARAM name="mayscript" value="true">');
document.writeln('<PARAM name="style" value="xdisplay: none; width:0; height:0; padding:0; margin:0;">');
document.writeln('</OBJECT>');
顺便说一句,我正在使用JavaScript将上述内容写入页面。
我在页面上有一个按钮,它试图使用JavaScript调用Java Applet函数,但是我收到了这个错误。
Message: 'document.LittleShootApplet' is null or not an object
Line: 77
Char: 1
Code: 0
URI: http://localhost/webs/front-end/activity.php
以上Javascript无法从Java applet调用函数,因为applet尚未正确加载。
感谢大家的帮助。
答案 0 :(得分:1)
将 ID 和名称属性直接添加到object
代码,而不是param
:
<OBJECT classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" width="0"
id="LittleShootApplet" name="LittleShootApplet">
...
</OBJECT>
删除了document.write以提高可读性。
我建议你按ID获取元素,而不是document.elementName
:
var applet = document.getElementById('LittleShootApplet');
// instead of document.LittleShootApplet
答案 1 :(得分:0)
Firefox因您的classid属性而失败。以下应该跨浏览器工作: -
<object type="application/x-java-applet"
name="LittleShootApplet" width="0" height="0">
<param name="code" value="LittleShootApplet">
<param name="scriptable" value="true">
<param name="mayscript" value="true">
</object>
在我的测试中,IE8和FF5都需要“type”属性,您省略了该属性。只有1.6.0.10之前的Java插件才需要mayscript参数。根据javadocs 1.6.0.21,仍然需要可编写脚本的参数。在1.6.0.24的测试中,对于已签名的applet,IE8在没有脚本化设置为真的情况下从JS调用它。