Google Chercher dans diml.org
[ english ]

Table des matières
Principe
Cas 1 : commutation DIV/LAYER pour la compatibilité Mozilla 4.x
Cas 2 : commutation Javascript pour la compatibilité Mozilla 4.x  Dernières infos
 Une application du composant  WCT_NEWS  
>> Haut de la page

Cinquième exemple de structure conditionnelle : gérer la compatibilité des navigateurs dans le serveur

Principe

La multiplicité des navigateurs, l'hégémonie d'Internet Explorer, l'intervention du W3C dans la définition du DOM, et les outsiders, n'ont fait que compliquer les problèmes de multicompatibilité. Chaque équipe de développement a forgé des outils pour résolution de cette disparité. Il devient difficile de s'y attaquer sans outils spécialisés, et les coûts de production de contenus Web ont augmenté.

Le DIML ne prétend pas résoudre ce problème, mais permet de gérer "proprement" ces alternatives, par l'usage de HTML conditionnel côté serveur.

Cas 1 : commutation DIV/LAYER pour la compatibilité Mozilla 4.x

L'exemple ci-dessous montre comment commuter une définition de calques. Le test qui y est mentionné fonctionne à l'heure de l'écriture de cette fiche, pour les navigateurs suivants :

  • Navigator 4.0 (Netscape)
  • Communicator 4.x (Netscape)
  • Netscape 6.x (Netscape)
  • Netscape 7.x (Netscape)
  • Explorer 4.x (Microsoft)
  • Explorer 5.x (Microsoft)
  • Explorer 6.x (Microsoft)

<%if ((%ENV::HTTP_USER_AGENT% !~ /Mozilla\/4/) 
   || (%ENV::HTTP_USER_AGENT% =~ /MSIE/)) %>
<div id="foo" style="style_definition">
<%else %>
<layer name="foo" top="0" left="0" visibility="visible">
<%endif %>
contenu du div
<%if ((%ENV::HTTP_USER_AGENT% !~ /Mozilla\/4/) 
   || (%ENV::HTTP_USER_AGENT% =~ /MSIE/)) %>
</div>
<%else %>
</layer>
<%endif %>

Cas 2 : commutation Javascript pour la compatibilité Mozilla 4.x

Dans le cas précédent, on trouve généralement du script Javascript de commutation de visibilité, ou de placement dans la page. Les divergences entre implémentations, et les stratégies différentes de construction du DOM rendent quasiment impossible l'écriture d'un code 100% compatible. Une technique identique à celle de l'exemple précédent permet de résoudre cette compatibilité dans le serveur :

<SCRIPT LANGUAGE=Javascript>
function setVisible(id)
   {
<%if ((%ENV::HTTP_USER_AGENT% !~ /Mozilla\/4/) 
   || (%ENV::HTTP_USER_AGENT% =~ /MSIE/)) %>
   document.getElementById(id).style.visibility = "visible";
<%else %>
   document.layers[id].visibility = "show";
<%endif %>
   }
</SCRIPT>
précédent sommaire suivant


All material is copyleft V.G. FREMAUX (EISTI France) 1999 to 2003 except explicitly mentioned