Domanda

Sto cercando di ottenere un elemento oggetto dalla mia pagina Web utilizzando getElementById (in definitiva in modo da poterlo sostituire con un elemento oggetto creato dinamicamente) ma sta tornando null in IE6.

Nel codice seguente, la funzione byId() restituisce [object HTMLObjectElement] in IE ma un lengthOfByTagName() in Firefox 3 e la funzione 0 restituisce 1 in IE ma <=> in Firefox.

C'è qualcosa che sto facendo di sbagliato?

<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>
È stato utile?

Soluzione

Ciò è dovuto al modo in cui IE tratta < object > nodi di fronte al DOM.

Dato che stai comunque sostituendo in modo dinamico, ti consiglio invece di creare un < div > dove ne hai bisogno e cambia innerHTML in modo che diventi l'HTML per l'oggetto richiesto.

Altri suggerimenti

Ho appena testato su IE 7 e ho visto il comportamento come descritto

Internet Explorer non prevede testo libero in un tag <object>. L'utilizzo di Debugbar sul tuo esempio ha dimostrato che IE non crea l'albero DOM corretto.

Usa questo codice invece

<object type="" id="VideoPlayer">
    <param name="allowScriptAcess" value="always" />
    <param name="allowfullscreen" value="true" />
</object>

Funzionerà come previsto.

In IE6, potrebbe non funzionare. Per riferimento: https://msdn.microsoft.com/en-us/library/ie/ms536437%28v=vs.85%29.aspx?f=255 <> amp;! MSPPError = -2.147,217396 millions magazine

Suggerisci di utilizzare jQuery per gestire la maggior parte dei casi

jQuery

var video = $("#VideoPlayer");

alert(video);

Prova questo nella tua codifica.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top