我正在尝试使用getElementById从我的网页获取一个对象元素(最终我可以用动态创建的对象元素替换它)但它在IE6中返回null
。
在以下代码中,byId()
函数在IE中返回null
但在Firefox 3中返回[object HTMLObjectElement]
,lengthOfByTagName()
函数在IE中返回0
但是Firefox中的1
。
我做错了吗?
<html>
<head>
<title>IE doesn't see Object element?</title>
<script type="text/javascript">
function byId()
{
var video = document.getElementById("VideoPlayer");
alert(video);
}
function lengthOfByTagName()
{
var length = document.getElementsByTagName("object").length;
alert(length);
}
</script>
</head>
<body>
<object type="" id="VideoPlayer">
<param name="allowScriptAcess" value="always" />
<param name="allowfullscreen" value="true" />
VideoPlayer element
</object>
<br>
<br>
<a href="#" onclick="javascript:byId()">getElementById("VideoPlayer")</a>
<br>
<a href="#" onclick="javascript:lengthOfByTagName()">getElementsByTagName("object").length</a>
</body>
</html>
答案 0 :(得分:3)
这是因为IE处理&lt; object&gt;的方式。节点相对于DOM。
由于您仍在动态更换,我建议您改为创建一个&lt; div&gt;在哪里需要它并将innerHTML更改为您需要的对象的HTML。
答案 1 :(得分:3)
我刚刚在IE 7上测试并看到了所描述的行为
Internet Explorer不期望<object>
标记中的自由文本。使用Debugbar就可以证明IE没有构建正确的DOM树。
请改用此代码
<object type="" id="VideoPlayer">
<param name="allowScriptAcess" value="always" />
<param name="allowfullscreen" value="true" />
</object>
它将按预期工作。
答案 2 :(得分:0)
在IE6中,它可能无法正常工作。参考:https://msdn.microsoft.com/en-us/library/ie/ms536437%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396 magazine
建议使用 jQuery 来处理大多数情况
jQuery
var video = $("#VideoPlayer");
alert(video);
在编码中试试这个。