如何使用Javascript动态嵌入Java小程序?

Jon*_*han 11 javascript java applet internet-explorer dom

我希望能够使用按下按钮时调用的Javascript函数动态地将Java小程序插入到网页中.(在页面加载时加载applet会使事情变得太慢,冻结浏览器等等...)我使用以下代码,它在FF中无缝运行,但在IE8,Safari 4和Chrome中没有错误消息而失败.有没有人知道为什么这不能按预期工作,以及如何以适用于所有浏览器的方式动态插入applet?我尝试过document.write()按照其他地方的建议使用,但是在页面加载后调用它会导致页面被删除,所以这对我来说不是一个选项.

function createPlayer(parentElem)
{
    // The abc variable is declared and set here

    player = document.createElement('object');
    player.setAttribute("classid", "java:TunePlayer.class");
    player.setAttribute("archive", "TunePlayer.class,PlayerListener.class,abc4j.jar");
    player.setAttribute("codeType", "application/x-java-applet");
    player.id = "tuneplayer";
    player.setAttribute("width", 1);
    player.setAttribute("height", 1);

    param = document.createElement('param');
    param.name = "abc";
    param.value = abc;
    player.appendChild(param);

    param = document.createElement('param');
    param.name = "mayscript";
    param.value = true;
    player.appendChild(param);

    parentElem.appendChild(player);
}
Run Code Online (Sandbox Code Playgroud)

Car*_*icz 1

我会建议做一些像你正在做的事情;所以我很困惑为什么它不起作用。

这是一份看起来相当权威的文件,可以说是出自马口之声。它提到了不同浏览器的特性。您最终可能需要为不同的实现执行不同的标签汤。

但也许小程序/对象标签有一些神奇之处,如果动态插入,它们将无法被处理。由于没有更多合格的建议,我有一个疯狂的解决方法可以为您提供:您如何在不同的页面上显示小程序,并动态创建一个IFRAME以在您的小程序应该占用的空间中显示该页面?IFRAME 在跨浏览器的语法上更加一致,如果它们以同样的方式失败,我会感到惊讶。

也许您应该在交换小程序节点后使用浏览器的调试工具来查看 DOM。也许它没有出现在您认为的位置,或者没有按照您认为正在创建的结构出现。您的代码对我来说看起来不错,但我对动态小程序不太有经验。