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)
我会建议做一些像你正在做的事情;所以我很困惑为什么它不起作用。
这是一份看起来相当权威的文件,可以说是出自马口之声。它提到了不同浏览器的特性。您最终可能需要为不同的实现执行不同的标签汤。
但也许小程序/对象标签有一些神奇之处,如果动态插入,它们将无法被处理。由于没有更多合格的建议,我有一个疯狂的解决方法可以为您提供:您如何在不同的页面上显示小程序,并动态创建一个IFRAME以在您的小程序应该占用的空间中显示该页面?IFRAME 在跨浏览器的语法上更加一致,如果它们以同样的方式失败,我会感到惊讶。
也许您应该在交换小程序节点后使用浏览器的调试工具来查看 DOM。也许它没有出现在您认为的位置,或者没有按照您认为正在创建的结构出现。您的代码对我来说看起来不错,但我对动态小程序不太有经验。