java - deployJava.js 将 <embed> 元素添加到头部区域

标签 java javascript html css deployjava

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

您可以在我的网站上实时查看 http://viva-games.ru/

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

我做错了什么?

最佳答案

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

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

如果您想使用 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 找到解决方法。如果您的小程序不显示任何 GUI,您可以将 appletContainer 的高度设置为 0。

注意:不要使用display:none隐藏appletContainer,否则你的applet不会运行。

关于java - deployJava.js 将 <embed> 元素添加到头部区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15182914/

相关文章:

javascript - Chrome 上 window.postMessage 的问题

php - 父类别作为 wordpress 中的主菜单和子类别作为子菜单

java - 读取输入流字节

java - 将相同的 auto_increment id 插入到两个不同的表中

java - Paho Mqtt Android 连接到代理失败 (32103)

Java 套接字 : Request-response pattern with object streams

javascript - Node-red 无法提取消息正文

html - 在 Bootstrap 行的链接中包装图像

javascript - SyntaxHighlighter.all() 在 DOM 级别不起作用?

javascript - 将导航包裹在子导航中