ToutSurTout.biz
Le DHTML


Assurer la compatibilité

Nous avons vu dans la première partie que les navigateurs minoritaires ne se comportent pas comme Internet Explorer (IE) 5 ou Netscape (NS) 6, qui respectent les normes officielles. Malheureusement, IE4 et NS4.X représentent encore plus de 10% des navigateurs. On ne peut donc pas les négliger, au risque de mécontenter une partie de l'audience du site.
La différence de programmation entre navigateurs est minime. C'est simplement l'accès aux objets calques qui diffèrent légèrement. Même si la différence de notation est peu importante, elle nécessite malgré tout de détecter le navigateur et de traiter le calque comme il convient. Cela revient à dupliquer le code.

Internet Explorer 4
IE4 ne reconnaît pas la fonction getElementById(). Tous les objets sont accessibles par le tableau d'objets all. Par exemple, pour accéder au calque moncalque, on écrit :
  document.all["moncalque"]

Les propriétés dans l'objet style existent aussi dans IE4. Par exemple, width, height, color... L'accès à ces propriétés se fait donc par :
  document.all["moncalque"].style.width=100;

REM : Cette notation est également comprise et correctement interprétée par IE5 et plus.

Netscape 4.X
NS4 ne reconnaît pas non plus la fonction getElementById(). L'accès aux objets calque se fait par le tableau layers qui fonctionne comme l'objet all en étant propre à Netscape :
  document.layers["moncalque"]

Netscape a introduit une nouvelle balise propriétaire <LAYER>. Avec NS4, on peut donc déclarer un calque de 2 manières :
  <DIV id="moncalque" style="width:100;height:100;left:500;top:80">

Ou avec la balise <LAYER>
  <LAYER name="moncalque" left=500 top=80 width=100 height=100>

Cette double notation rend l'accès aux propriétés de style différent. On n'utilise pas l'objet style ; l'accès est direct. Pour la largeur du calque, on écrit : <<document.layers["moncalque"].width=100;

REM :
- Une propriété n'existe que si elle a été déclarée dans la balise <DIV> ou <LAYER>.
- Netscape 6 a complétement abandonné la gestion des layers. Ainsi, aucun script DHTML pour NS4 ne peut fonctionner sur NS6 sans adaptation. Voilà une faàon de faire évoluer ses produits discutable : Assurer la compatibilité avec les versions antérieures demande du travail de développement et de test, mais accélère l'installation de la dernière version par les utilisateurs et évite aux développeurs des mises à jour fastidieuses et inutiles.
En agissant ainsi, Netscape s'attire la colère des développeurs et des webmasters et risquent de retarder l'implantation de sa dernière version, en perdant encore plus de parts de marché.