deployJava.js在head区域添加了一个<embed>元素

Eps*_*ool 2 html javascript css java deployjava

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

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

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

我做错了什么?

ben*_*eet 7

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

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

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

document.write(...);
Run Code Online (Sandbox Code Playgroud)

通过:

document.getElementsByTagName('body')[0].insertAdjacentHTML('afterbegin', ...);
Run Code Online (Sandbox Code Playgroud)

然后你可以deployJava.runApplet在JavaScript中的任何地方打电话.您甚至可以将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>
Run Code Online (Sandbox Code Playgroud)

和文件deployJava.js:

document.getElementById('appletContainer').insertAdjacentHTML('afterbegin', ...);
Run Code Online (Sandbox Code Playgroud)

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

注意:不要使用appletContainer display:none,否则你的applet将无法运行.