¿IE6 no puede encontrar el elemento Object con getElementById ()?
-
22-07-2019 - |
Pregunta
Estoy tratando de obtener un elemento objeto de mi página web usando getElementById (en última instancia, para poder reemplazarlo con un elemento objeto creado dinámicamente) pero devuelve null
en IE6.
En el siguiente código, la función byId()
devuelve [object HTMLObjectElement]
en IE pero un lengthOfByTagName()
en Firefox 3 y la función 0
devuelve 1
en IE pero <=> en Firefox.
¿Hay algo que estoy haciendo mal?
<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>
Solución
Esto se debe a la forma en que IE trata a < object > nodos frente al DOM.
Dado que de todos modos está reemplazando dinámicamente, le recomiendo que cree un < div > donde lo necesite y cambie el innerHTML para que sea el HTML del objeto que necesita.
Otros consejos
Acabo de probar en IE 7 y vi el comportamiento como se describe
Internet Explorer no espera texto libre en una etiqueta <object>
. El uso de Debugbar en su muestra demostró que IE no construye el árbol DOM correcto.
Use este código en su lugar
<object type="" id="VideoPlayer">
<param name="allowScriptAcess" value="always" />
<param name="allowfullscreen" value="true" />
</object>
Funcionará como se esperaba.
En IE6, puede no funcionar. Para consultar: https://msdn.microsoft.com/en-us/library/ie/ms536437%28v=vs.85%29.aspx?f=255 & amp; MSPPError = -2147217396 revista
Sugerir el uso de jQuery para manejar la mayoría de los casos
jQuery
var video = $("#VideoPlayer");
alert(video);
Prueba esto en tu codificación.