JDNet | Solutions | Emploi | Votre high-tech
 
Linternaute | Copainsdavant
Séminaires & Evénements | Etudes
   

Rechercher  

 
Sociétés Prestataires Carnet Formations Progiciels Encyclo Fonds Guide d'achat Comparateur Téléchargement Livres
Actualités
   2003
   2002
   2001
   Livres
Rubriques
   Java/J2EE
   PHP
   XML
   Client Web
   Technos .NET
   Flash
   Algo/Méthodes
   Outils

Dossiers
   Tous les dossiers

   PHP, Flash, SVG
   Perl / CGI - SSI
   Langages Web
   Services Web
   Sécurité
Ressources
   Interviews

   Téléchargement
   Composants
   Documentation
Contacts
   Rédaction
   Webmaster
© Benchmark Group

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]

 
Gratuit - Les nouveautés de
JDNet Développeurs
Toutes nos newsletters
 

Quel est le meilleur langage pour aborder la programmation ?
Basic (VB & co...)
C/C++
Java/C#
PHP
Pascal/Delphi
Perl
Python
autre...



Les outils de développement dans le Guide des Solutions
e-business

L'encyclopédie JDNet Toutes les notions pratiques, techniques et économiques relatives à l'e-business.
>> Accès à la rubrique "Développement"

Comparez les prix Matériel, PDA, modems...
Les bonnes affaires de la high-tech avec Kelkoo.
>> Comparateur

Société | Contacts | Publicité | Presse | Recrutement | Tous nos sites | Données personelles
Pour tout problème de consultations, écrivez au Webmaster.
© Benchmark Group, 4 rue diderot 92156 Suresnes Cedex