我有一个网站,我正在使用Java小程序,并在页面的头部区域包含deployJava.js加载标记。但是,当我在Chrome调试器中看到生成的HTML时,此脚本会立即破坏我的头部内容,因此其他头部内容会显示在正文标记中!
您可以在我的网站http://viva-games.ru/
上看到它deployJava也会插入一个embed标签(在正文打开后),这样你就可以在页面顶部看到一个空行。
我做错了什么?
答案 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将无法运行。