2

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

你可以在我的网站http://viva-games.ru/上看到它

deployJava 还会插入一个 embed 标记(在正文打开之后),因此您可以在页面顶部看到一个空行。

我做错了什么?

4

1 回答 1

7

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

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

如果您想使用 RequireJS 异步加载它,或者如果您想稍后调用它,在页面加载后,下载未压缩版本并替换每个出现的:

document.write(...);

经过:

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

然后你可以deployJava.runApplet在你的 JavaScript 中的任何地方调用。您甚至可以将小程序标签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 找到解决方法。如果您的小程序不显示任何 GUI,您可以将小程序容器的高度设置为 0。

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

于 2013-03-17T23:37:04.400 回答