【问题标题】:deployJava.js adds an <embed> element to head areadeployJava.js 将 <embed> 元素添加到头部区域
【发布时间】:2013-02-17 10:34:29
【问题描述】:

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

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

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

我做错了什么?

【问题讨论】:

    标签: java javascript html css deployjava


    【解决方案1】:

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

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

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

    document.write(...);
    

    作者:

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

    然后您可以在 JavaScript 中的任何位置调用 deployJava.runApplet。您甚至可以将小程序标签放在页面某处的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将无法运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-03
      • 2017-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多