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>
Foi útil?

Solução

Este é por causa da maneira como o IE trata nós vis-a-vis o DOM.

Uma vez que você está substituindo dinamicamente qualquer maneira eu recomendo que você, em vez criar um

, onde você precisar dele e mudar o innerHTML para ser o HTML para o objeto que você necessita.

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top