Javascript在IE8中不起作用

时间:2009-11-24 08:25:27

标签: javascript flash dom internet-explorer-8

我正在尝试在我的页面的onload上动态创建这个html元素,但是;当我运行它时,代码不能在IE8上工作,但在firefox,safari和其他方面没问题。


 function getmovie() {
           var container = document.getElementById("container");
           if (!container)
               return;
           var object = document.createElement("object");
           object.setAttribute("width", "512");
           object.setAttribute("height", "296");
           var param1 = document.createElement("param");
           param1.setAttribute("name", "movie");
           param1.setAttribute("value", "url");
           var param2 = document.createElement("param");
           param2.setAttribute("name", "allowFullScreen");
           param2.setAttribute("value", "true");
           var embed = document.createElement("embed");
           embed.setAttribute("src", "my url");
           embed.setAttribute("type", "application/x-shockwave-flash");
           embed.setAttribute("allowFullScreen", "true");
           embed.setAttribute("width", "512");
           embed.setAttribute("height", "296");
           object.appendChild(param1);
           object.appendChild(param2);
           object.appendChild(embed);
           container.appendChild(object);
           }
任何人都可以更正我的代码吗?

3 个答案:

答案 0 :(得分:3)

除非您有充分的理由手动构建包含DOM元素的Flash,否则请考虑使用SWFObject之类的框架替换代码,以便为您完成所有“脏工作”。

swfobject.embedSWF("flashmovie.swf", "container", "512", "296", "9.0.0",
    "expressInstall.swf", { allowFullScreen : true });

答案 1 :(得分:1)

您无法使用name

在IE中设置任何元素的.setAttribute('name', value);属性

您需要使用:

param1.name = 'movie';//works

param1.setAttribute("name", "movie");//will fail

注意:this bug was fixed in IE8(只要您在IE8标准模式下运行)

答案 2 :(得分:0)

这可能是原因吗?

  

IE7休息getElementById


如果不是这种情况,请尝试设置object标记的codebase和classid属性 对象

object.setAttribute("codebase", "http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab");
object.setAttribute("classid", "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000");