Petit
guide de compatibilité des navigateurs web
Rappel des principales recommandations du W3C concernant les langages web côté client, et présentation des différences entre les navigateurs.
Ecrire un code HTML, XML ou Javascript peut être un véritable
casse-tête, tout webmaster en est bien conscient. Il existe
de nombreux navigateurs, et chacun d'eux possède ses particularités.
Et même si plusieurs navigateurs supportent une certaine méthode
ou propriété, cela ne signifie pas qu'ils vont fonctionner
de la même manière.
A l'époque où Internet Explorer et Netscape Navigator
se partageaient réellement le marché des navigateurs,
une solution consistait à écrire du code qui supportait
les deux applications. Cela donnait un code lourd, gourmand en bande
passante. Aujourd'hui, de nombreux navigateurs gratuits sont disponibles
sur un marché outrageusement dominé
par IE, et si les premiers respectent en général les
standards du W3C, l'implémentation du second révèle
des éléments propriétaires qui, de par le poids
du produit, font paradoxalement figure de standard de facto.
Nous souhaitons insister dans cet article de présentation
sur les principaux points de divergence entre les navigateurs, et
particulièrement entre IE et le "reste du monde".
Nous examinerons successivement le Document Objet Model (DOM), les
balises HTML et le JavaScript.
Le DOM
Rappelons que le "Modèle Objet de Document" est une interface
de programmation d'applications (API) pour documents HTML et XML.
Il définit la structure logique des documents et la manière dont
on manipule et accède à ces derniers(voir notre
article).
Avec le DOM, les développeurs peuvent construire des documents,
naviguer dans leur structure, ajouter, modifier ou supprimer soit
des éléments, soit du contenu. On peut accéder à tout
ce qui peut être trouvé dans un document HTML ou XML. Mais, en particulier,
l'interface DOM pour les sous-ensembles XML internes et externes
n'a pas encore été définie.
A l'origine, DOM était conçu pour permettre la portabilité
des scripts JavaScript et des programmes Java entre les navigateurs
Web. Dans le DOM, les documents ont une structure logique comparable
à un arbre. Une propriété importante des modèles de structure
DOM est l'isomorphisme structural : si deux implémentations
distinctes du Modèle Objet de Documents sont utilisées pour créer
une représentation du même document, elles créeront le même modèle
structurel, avec très précisément les mêmes objets et les mêmes
relations entre ces objets.
Pour l'instant, des navigateurs tels que Explorer et Navigator disposent
de leur propre DOM. Cela complique les choses : il faut déterminer
le DOM afin d'exécuter le code Javascript qui lui est propre.
Donc il faut reconnaître le navigateur.
Depuis sa version 6, Netscape a tendu la main au W3C. Les différences
entre les navigateurs sont mineures, mais elles peuvent affecter
l'affichage de la page. Le tableau suivant répertorie les
principales.
Différences
des propriétés dans l'arborescence DOM
|
Explorer
|
Description
|
Standard
W3C
|
window.screenLeft,
window.screenTop
|
Position
de la fenêtre de navigation par rapport à l'écran
|
window.screenX,
window.screenY
|
document.
parentWindow
|
Pour
obtenir la fenêtre dans laquelle le document se trouve
|
Cette
propriété n'existe pas dans le standard, car
elle est inutile car l'objet window
est
accessible de n'import où.
|
myForm
|
Donne
accès à un formulaire défini par <form
name="myForm">
|
Il
convient d'utiliser document.myForm
|
innerText
|
Remplace
le contenu de l'élément par le texte brut spécifié
|
L'équivalent
standard
est de créer les noeuds manuellement avec document.createText
|
Validator : HTML 4.01 et CSS 2
Le W3C fournit un service de validation
du code HTML. Il permet de s'assurer de la conformité d'un
code aux recommandations du W3C. La dernière recommandation
HTML du W3C est la version 4.01. Dans cette dernière version,
l'organisme a cherché à extraire de la précédente,
HTML 3.2, tout ce qui était lié au style. Ainsi, à partir de sa
version 4, HTML permet normalement de structurer le document (titres,
paragraphes, liens, tableaux...). Tous les aspects de styles (couleurs,
polices...) sont normalement pris en charge par une feuille de style
CSS.
De la même manière, l'organisme propose un service
de validation des styles CSS. La première recommandation CSS définissait
tout ce qui touche aux caractéristiques graphiques : couleurs, polices,
tailles... Une seconde recommandation à été ajoutée pour gérer tous
les problèmes de positionnement dynamique. Aujourd'hui, une troisième
recommandation est en cours de réalisation.
Les balises propriétaires
Les deux plus gros navigateurs sur le marché disposent de
balises propriétaires, présentées dans les
deux tableaux ci-dessous.
Les
balises propriétaires d'Internet Explorer
|
Balise
|
Fonction
|
<BGSOUND> |
Intègre
un arrière plan sonore |
<BODY
BGPROPERTIES> |
Effet
filigrane
|
<COMMENT> |
Met
un texte en commentaire |
<HR
COLOR> |
Spécifie
une couleur pour un filet |
<IFRAME> |
Insère
un cadre local |
<IMG
DYNSCR> |
Insère
une vidéo
|
<MARQUEE> |
Balise
de défilement de texte |
<OBJECT> |
Inclue
des objets dans un document HTML |
<TD
BACKGROUND> |
Insère
une image d'arrière plan dans une cellule |
Les
balises propriétaires de Netscape Navigator
|
Balise
|
Fonction
|
<BLINK> |
Fait
clignoter un texte |
<OL
ou UL TYPE> |
Spécifie
le type de puce
|
<IMG
LOWSRC> |
Accélère
une image |
<LAYER> |
Superpose
des blocs de textes ou d'images |
<SPACER> |
Insère
un bloc d'espace vide |
Il est conseillé de les utiliser avec parcimonie. Elles
ne sont pas reconnues par les autres navigateurs, qui affichent
la page voulue avec des erreurs.
JavaScript
JavaScript a été créé par Netscape pour développer des applications
Internet et, par la même occasion, pour étendre les possibilités
du HTML. Il s'agit d'un langage léger et orienté-objet, permettant
d'écrire des scripts. Il ne faut pas confondre Java et Javascript.
Java est un langage de programmation côté serveur développé
par Sun et non un langage de script côté client comme
Javascript.
Le véritable inconvénient de JavaScript est sa compatibilité très
limitée entre navigateurs Explorer et Navigator ont parfois des
visions très différentes du JavaScript. Cela oblige souvent à coder
deux scripts pour la même action.
Aujourd'hui, il s'agit moins d'Explorer contre Netscape que d'Explorer
contre les autres. Le navigateur de Microsoft possède des
particularités qui, comme pour les balise HTML, entravent
le bon affichage d'une page par un autre navigateur.
Par exemple, en JavaScript, on accède aux tableaux en utilisant
les signes [ ]. Microsoft avait une notion similaire aux tableaux,
les collections, accessibles grâce à ( ). Lors de l'implémentation
de Javascript, l'accès aux collections a été
appliqué à l'accès aux tableaux. La syntaxe
document.forms[0], recommandée
par le W3C, s'écrit document.forms(0)
sur Explorer.
Les événements Javascript
Il existe une variable event, mise
au point par Netscape à partir de l'attribut onclick.
Microsoft l'a incorporée dans windows,
pour en faire windows.event. Bien sûr,
cette propriété n'est pas reconnue par les standards.
De cette manière, de nombreuses propriétés
sont différentes entre Explorer et les navigateurs se pliant
aux recommandations du W3C. Le tableau suivant récapitule
les principales différences.
Différences
des propriétés de l'objet événement
|
Explorer
|
Description
|
Standard
W3C
|
fromElement
|
Elément
où se trouvait la souris
|
target
si
lévénement est onmouseout, relatedtarget
si
l'événement est onmousover
|
toElement
|
Elément
vers lequel la souris se déplace
|
relatedtarget
si
l'événement est onmousover, target
si
lévénement est onmouseout
|
cancelBubble
|
Si
cette propriété est vraie, l'élément
ne se propagera plus vers le haut de l'arbre DOM
|
La
méthode stopPropagation(
) est
appropriée
|
returnValue
|
Si
cette propriété est fausse, Explorer n'exécutera
pas l'action par défaut de l'élément
|
La
méthode preventDefault(
) est
appropriée
|
offset
X, offset Y
|
Psotion
de l'événement par rapport à l'élément
qui le génère
|
layer
X, layer Y
|
Cette présentation
n'est certes pas exhaustive, mais répertorie les problèmes
les plus courants. La documentation des différents navigateurs
pourra être consultée avec profit pour un niveau de détail
supérieur.
[Serge
Descombes , 11 septembre
2002 , JDNet]
|