Question

J'essaie d'obtenir un élément d'objet de ma page Web à l'aide de getElementById (pour pouvoir le remplacer par un élément d'objet créé dynamiquement), mais il renvoie null dans IE6.

Dans le code suivant, la fonction byId() renvoie [object HTMLObjectElement] dans IE mais un lengthOfByTagName() dans Firefox 3 et la 0 fonction 1 dans IE, mais <=> dans Firefox.

Y a-t-il quelque chose que je fais 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>
Était-ce utile?

La solution

Cela est dû à la manière dont IE traite < object > nœuds vis-à-vis du DOM.

Puisque vous remplacez de toute façon de façon dynamique, je vous recommande plutôt de créer un < div > où vous en avez besoin et changez le code innerHTML pour qu'il soit le code HTML de l'objet souhaité.

Autres conseils

Je viens de tester sur Internet Explorer 7 et j'ai constaté le comportement décrit

Internet Explorer n'attend pas de texte libre dans une balise <object>. L'utilisation de la barre de débogage sur votre exemple a prouvé que IE ne construisait pas l'arborescence DOM appropriée.

Utilisez ce code à la place

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

Cela fonctionnera comme prévu.

Dans IE6, cela peut ne pas fonctionner. Pour plus de détails, consultez: https://msdn.microsoft.com/en-us/library/ie/ms536437%28v=vs.85%29.aspx?f=255 & et; MSPPError = -2147217396 magazine

Suggérez d'utiliser jQuery pour traiter la plupart des cas

.
jQuery

var video = $("#VideoPlayer");

alert(video);

Essayez ceci dans votre code.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top