IE6 não consegue encontrar elemento de objeto com getElementById ()?
-
22-07-2019 - |
Pergunta
Eu estou tentando obter um elemento de objeto de minha página web usando getElementById (em última análise, para que eu possa substituí-lo por um elemento de objeto criado dinamicamente), mas ele está retornando null
no IE6.
No código a seguir, a função byId()
retornos null
no IE, mas uma [object HTMLObjectElement]
no Firefox 3 eo lengthOfByTagName()
função 0
retornos no IE, mas 1
no Firefox.
Existe algo que eu estou fazendo errado?
<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>
Solução
Este é por causa da maneira como o IE trata
Uma vez que você está substituindo dinamicamente qualquer maneira eu recomendo que você, em vez criar um
Outras dicas
Eu apenas testado no IE 7 e visto o comportamento como descrito
Internet Explorer não espera texto livre em uma tag <object>
. Usando DebugBar em você amostra prooved que o IE não construir a árvore DOM direita.
Use este código em vez
<object type="" id="VideoPlayer">
<param name="allowScriptAcess" value="always" />
<param name="allowfullscreen" value="true" />
</object>
Ele irá funcionar como esperado.
No IE6, ele pode não funcionar. Para referir-se: https://msdn.microsoft.com/en-us/library/ie/ms536437%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396 revista
Sugerir usando jQuery para lidar com a maioria dos casos
jQuery
var video = $("#VideoPlayer");
alert(video);
Tente isto em sua codificação.