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

Insérer du contenu suivant le navigateur avec SSI

Confirmé

Plaçons-nous dans le cas de figure suivant: vous avez élaboré une page d'accueil remplie d'effets DHTML, mais vous vous apercevez que l'affichage complexe des différents calques et styles que vous utilisez se révèle complètement différent sur IE5, Netscape 4.7, Netscape 6.0 ou encore Opera 5.0. Que faire? Passer de longs moments à "gommer" les différences en réalisant un code DHTML compatible avec le plus grand nombre de navigateurs, au risque de sacrifier certains effets dont vous êtes si fier (cette approche est encore la meilleure), ou, au contraire, contourner le problème en réalisant plusieurs pages pour chaque navigateur, et réaliser un petit Javascript de redirection? La deuxième méthode peut être fastidieuse si les différences entre les pages sont minimes. Dans ce cas, les trois quarts du code de chaque page sera à l'ensemble d'entre elles. Ne serait-il pas plus simple de ne réaliser qu'une page, et de décider dynamiquement d'inclure telle portion de code, ou telle autre, suivant le navigateur? C'est exactement ce que nous permet de faire les SSI, pourvu qu'ils soient supportés par le serveur d'hébergement. A noter que le jeu d'instructions SSI utilisé n'est implémenté que par la versions 1.2 - et supérieures - d'Apache. On parle d'XSSI - eXtended SSI - pour les désigner.

Boucle conditionnelle en commandes SSI
Notre test SSI présentera la structure suivante:

 

<!--#if expr="expression à évaluer" -->
  <!--#include virtual="fichier_pour_IE5" -->
<!--#elif expr="expression à évaluer" -->
  <!--#include virtual="fichier_pour_NN6" -->
<!--#elif expr="expression à évaluer" -->
  <!--#include virtual="fichier_pour_NN4" -->
etc...
<!--#else>
  <!--#include virtual="fichier_pour_Opera" -->
<!-- #endif-->



Chaque fichier contiendra, non une page entière, mais la portion de code HTML (ou DHTML) qui pose problème lors de l'affichage sur différents navigateurs.
L'expression qui sert de condition de test fera intervenir, quant à elle, la variable d'environnement CGI HTTP_USER_AGENT, qui contient le nom du navigateur. Par exemple:

${HTTP_USER_AGENT} = /MSIE 5/

Une opération de recherche de la chaîne MSIE 5 dans la variable ${HTTP_USER_AGENT} (voir l'article sur les expressions régulières) permettra de caractériser Internet Explorer 5. Notre programme ressemblera finalement à celui-ci:

 

<!--#if expr="${HTTP_USER_AGENT} = /MSIE 5/" -->
  <!--#include virtual="fichier_pour_IE5" -->
<!--#elif expr="${HTTP_USER_AGENT} = /Mozilla\/6/" -->
  <!--#include virtual="fichier_pour_NN6" -->
<!--#elif expr="${HTTP_USER_AGENT} = /Mozilla\/4/" -->
  <!--#include virtual="fichier_pour_NN4" -->
etc...
<!--#else>
  <!--#include virtual="fichier_pour_Opera" -->
<!-- #endif-->


Ainsi, très simplement, une alternative à la redirection de page (Javascript ou CGI/Perl) est proposée. Des modifications sur la page d'accueil qui ne concernent pas les parties posant problème de compatibilité entre navigateurs n'ont ainsi pas besoin d'être effectuées sur toutes les pages spécifiques à tel ou tel navigateur. La programmation modulaire SSI nous fait gagner un temps précieux.

[Jérôme Morlon 16 mars 2001 , 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