deployJava.js将<embed />元素添加到head区域

时间:2013-03-03 05:55:54

标签: java javascript html css deployjava

我有一个网站,我正在使用Java小程序,并在页面的头部区域包含deployJava.js加载标记。但是,当我在Chrome调试器中看到生成的HTML时,此脚本会立即破坏我的头部内容,因此其他头部内容会显示在正文标记中!

您可以在我的网站http://viva-games.ru/

上看到它

deployJava也会插入一个embed标签(在正文打开后),这样你就可以在页面顶部看到一个空行。

我做错了什么?

1 个答案:

答案 0 :(得分:7)

deployJava.js很难集成,因为它在文档完全加载之前使用document.write在页面中插入标记。基本上,它不支持异步加载。

根据the examples from Oracle,我们必须将文件包含在正文中的某个位置,并在包含后立即调用它。小程序标签将放在那里。

如果您想使用RequireJS异步加载它,或者如果您想稍后调用它,则在加载页面后,下载uncompressed version并替换每次出现的事件:

document.write(...);

由:

document.getElementsByTagName('body')[0].insertAdjacentHTML('afterbegin', ...);

然后,您可以在JavaScript中的任意位置调用deployJava.runApplet。您甚至可以将applet标记放在页面中某个位置的div元素中。 HTML代码:

<body>
    ...
    <div id="appletContainer"></div>

    // The include after the div or once the page is loaded
    <script type="text/javascript" src="javascript/deployJava.js"></script>
    ...
</body>

和文件deployJava.js

document.getElementById('appletContainer').insertAdjacentHTML('afterbegin', ...);

关于空行,我没有任何解释,但可以使用CSS找到解决方法。如果您的applet没有显示任何GUI,您可以将appletContainer的高度设置为0。

注意:请勿使用display:none隐藏appletContainer,否则您的applet将无法运行。