将APPLET标记转换为IE6的OBJECT标记

时间:2009-12-14 17:33:34

标签: java javascript applet

我已将以下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尚未正确加载。

感谢大家的帮助。

2 个答案:

答案 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调用它。