IE6 non riesce a trovare l'elemento Object con getElementById ()?
-
22-07-2019 - |
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>
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.