Rechercher dans ce blog

vendredi 19 mars 2010

IE sucks... getAttribute("class")

<table class="aClass" id="id1">...</table>

<script type="text/javascript">
    var node = document.getElementById("id1");
    alert(node.getAttribute("class"));
</script>


Ce code est plutôt simple. Pouvez-vous prévoir son résultat ?
Ok, sous Firefox, on a une alerte "aClass" qui apparaît, mais sous IE... l'alerte indique "null" !
Ce problème intervient sous IE6, IE7 et IE8 uniquement. Pourquoi ? ... demandez donc à Microsoft.
Comment résoudre ce cas ? la réponse tombe du ciel: utilisez .className !

alert(node.className);

... ceci fonctionne sous IE 6, 7, 8, Firefox, etc...

De la même manière, node.setAttribute("class", "aCssClass") ne fonctionne pas sous IE, il faut utiliser node.className="aCssClass".

Notez que sous IE, l'attribut "class" qui avait mystérieusement disparu a cédé sa place à un nouvel attribut "className" => getAttribute("className") fonctionne également.


Merci Micro de nous avoir fourni Internet Explorer, et un mal de crâne pour adapter nos codes à ce browser.

Aucun commentaire:

Enregistrer un commentaire