Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les tutoriels > Non-Officiels > Site Web > XHTML / CSS > Faire un site compatible IE et FF > Faire un site compatible IE et FF > Les instructions conditionnelles > Lecture du tutoriel

Les instructions conditionnelles

Vous vous apprêtez à lire un tutoriel rédigé par un membre de ce site. Malgré tout le soin que ce membre a pu apporter au tutoriel, nous ne pouvons pas garantir que les informations contenues sur cette page sont exactes à 100%. Merci de garder cela en tête lorsque vous lirez cette page ;o)
Avatar
Auteur : Thunderseb
Visualisations : 8 312

Plus d'informations Plus d'informations
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

Introduction

Les instructions conditionnelles, aussi appelées commentaires conditionnels ou expressions conditionnelles (Conditional Comments en anglais), sont de simples commentaires HTML que seul Internet Explorer prend en compte. On parle d'instructions conditionnelles, car ce système se base sur les instructions conditionnelles utilisées en Javascript (si ceci, alors cela ^^ ).

Voici un exemple :
Citation : Exemple
<!--[if IE]>
<h2>Titre de la page si IE</h2>
<![endif]-->


Ce qui se trouve entre les premiers crochets est la condition. Dans cet exemple simple, le code entre la balise d'ouverture et la balise de fermeture du commentaire est pris en compte, si et seulement si le navigateur utilisé est Internet Explorer (condition if IE => si IE). C'est-à-dire que sous IE, la balise H1 sera prise compte, alors que sous un autre navigateur, elle ne le sera pas.

De prime abord, cela na pas l'air très utile. Mais imaginez : si le navigateur est IE, vous pouvez afficher une feuille de style qui lui est toute destinée, sans devoir vous encombrer de script de détection de navigateur, un peu comme ceci :

Citation : Exemple
<link href="style_ff.css" rel="stylesheet" type="text/css" />
<!--[if IE]>
<link href="style_ie.css" rel="stylesheet" type="text/css" />
<![endif]-->


Dans cet exemple, si le navigateur n'est pas IE, la condition retourne false (faux), et la feuille style_ie.css (qui fait office de patch pour corriger ce qu'IE n'affiche pas bien par rapport à Firefox) n'est pas chargée. Seule style_ff.css est chargée. Si par contre le navigateur est IE, style_ff.css est toujours chargée, mais la condition retourne true (vrai), et la feuille style_ie.css est chargée..

Au fait, ces instructions conditionnelles sont tout à fait valides, puisqu'il ne s'agit en réalité que de simples commentaires inoffensifs ;)


En réalité, il existe 2 types de commentaires conditionnels :

TypeSyntaxeValiditéUtilité
downlevel-hidden <!--[if expression]> HTML <![endif]--> Valide Permet afficher du code si le navigateur est IE
downlevel-revealed <![if expression]> HTML <![endif]> Non valide Permet de masquer du code si le navigateur est IE


Les commentaires de type downlevel-revealed ne doivent pas être utilisés, de par leur non-validité !

Expressions et opérateurs

Les expressions



Dans les exemples précédents, nous avons vu simplement comment afficher quelque chose si le navigateur est IE. Mais il est possible de spécifier une version particulière d'IE, une série de version (version supérieure à la version 5 par exemple)... Voici un petit tableau reprenant les différentes expressions :

IE Toutes les versions d'IE
IE 7 IE 7
IE 7.0b IE 7.0 Beta
IE 6 IE 6
IE 5.5 IE 5.5
IE 5.0002 IE 5.0 de Windows 2000
IE 5.0 IE 5
IE 5 IE 5 (et pas IE 5.5)
IE x.xxxx Version spécifique d'une des versions.


La version IE x.xxxx (les x sont des chiffres) représente une version spécifique d'une version d'IE. Par exemple, ceci : IE 6.0260 est une version spécifique de IE 6.0. Il faut faire attention de ne pas mettre de . dans la chaîne décimale. Ceci n'est pas bon : IE 6.0.260 ! Je vous accorde que l'utilité de cette astuce relève de la pure folie, car connaître sur le bout des doigts les différents sous-versions d'IE, faut être doué ^^ (au fait, ce numéro est en fait la version de mon IE. Vous n'avez sûrement pas la même. Je peux vous dire aussi qu'une des sous version de IE 5 est la 5.0453. Je l'ai vu sur MSDN en rédigeant ce tuto ^^ ).

Dans l'exemple suivant, H1 est affiché si la version est la 6., et H2 est affiché si la version est la 5.0

Citation : Exemple
<!--[if IE 6]>
<h1>Titre de la page</h1>
<![endif]-->
<!--[if IE 5.5]>
<h2>Sous-titre de la page</h2>
<![endif]-->


Les opérateurs



ItemExempleDiscription
! [if !IE 6] n'est pas (négation)
lte [if lte IE 6] inférieur ou égal à
lt [if lt IE 6] inférieur à
gt [if gt IE 5.5] supérieur à
gte [if gte IE 6] supérieur ou égal à
( ) [if (IE 7)] sert à isoler une expression (voir ci-dessous pour l'utiliser)
& [if (gt IE 5)&(lt IE 7)] Opérateur AND. Toutes les conditions doivent être remplies
| [if (IE 6)|(IE 7)] Opérateur OR. Au moins une des conditions doit être remplie


Voici un exemple qui met en lumière ces opérateurs. La balise H1 sera affichée si le navigateur est IE 5 et + :

Citation : Exemple
<!--[if gte IE 5]>
<h1>Titre de la page</h1>
<![endif]-->


Nous pouvons traduire la condition comme suit : si la version d'IE est supérieure ou égale à la version 5.0, alors on affiche.


Ce code n'est pas d'une grande utilité, puisqu'il englobe toutes les versions d'IE (IE 4 ne supporte pas les commentaires conditionnels). L'exemple suivant est plus utile :

Citation
<!--[if gt IE 5.5]>
<h1>Titre de la page</h1>
<![endif]-->


Ce script ne sera pris en compte que par les versions supérieures à la version 5.5. Donc, ce script ne sera pas appliqué pour IE 5 et IE 5.5.

Cacher le contenu à IE

Voici ce code, qui permet de cacher du contenu à IE, et pas à un autre navigateur :

Citation : Exemple
<!--[if !IE]><-->
<h2>Titre de la page</h2>
<!--><![endif]-->


Le fonctionnement de ce script est assez simple.

Si le navigateur n'est pas IE (il y a l'opérateur ! ), pas de problème, tout ce qui est à l'intérieur est ignoré par IE. Mais si le navigateur est Opera par exemple (on ne va pas prendre tout le temps Firefox non plus :D ), celui-ci va lire le code, en commençant par <!--[if !IE]>. Il ne comprend pas cette condition, ce qui est normal. Alors, il continue à lire le code, et rencontre <-->. Ah, très bien. C'est un tag de fermeture de commentaire. Le commentaire conditionnel est donc fermé, pour Opera. Celui-ci affichera donc la balise H1, puisqu'elle ne figure pas dans un commentaire. Le petit Opera continue sa lecture, et rencontre <!-->, qui est un tag d'ouverture de commentaire qui est directement suivit, après la fermeture de l'instruction, par le tag -->, qui symbolise le tag de fermeture d'un commentaire. C'est tout !

Voici, pour finir cette partie, le script parfait qui affiche juste style_ie.css si le browser est IE, et qui affiche juste style_ff.css si le navigateur n'est pas IE :

Citation : Exemple
<!--[if IE]>
<link href="style_ie.css" rel="stylesheet" type="text/css" />
<![endif]-->
<!--[if !IE]><-->

<link href="style_ff.css" rel="stylesheet" type="text/css" />
<!--><![endif]-->


Voilà qui clôture (ça me fait penser à Zozoz ça, les clôtures ^^ ) la partie dédiée aux instructions conditionnelles.

PS : dans la plupart des tutoriaux, on montre toujours l'intérêt d'afficher une feuille de style, et beaucoup de gens croient que ça n'a que cette utilité. Moi, je vous ai d'abord montré qu'on pouvait afficher une balise (ici, H1). Cela peut être utile dans certains cas, d'afficher au non une balise suivant le navigateur. Par exemple, afficher un grand div où il est écrit "Bienvenue pro-Micosoft", si c'est IE, ou "Bienvenue anti-Microsoft", si ce n'est pas IE. Je vous déconseille quand même de faire cela, hein :D :D

En plus...

Liens





Bug de coloration



Plusieurs personnes m'ont fait part d'un petit problème dans la coloration de Notepad++. J'ai donc installé le bloc-notes ++ pour vérifier, et effectivement, le gratuiciel se plante dans la coloration de la balise de fermeture de l'expression conditionnelle « afficher si ce n'est pas IE ». Je vous ai fait 2 jolis petits screenshots du problème (un sous Notepad++, ou ça va mal, et un sous Dreamweaver, ou ça va bien (normalement, les commentaires son en gris sous DW, mais j'ai modifié la coloration, l'orange est plus visible (j'ai aussi changé l'arrière-plan ^^ Le gris fait moins mal au yeux :) ))) :

Image utilisateur Image utilisateur


smilz m'a dit que si on met un commentaire vide juste après l'expression conditionnelles, ça résout le problème. C'est à tester :) (c'est ceci le commentaire vide : <!---->).

Chapitre précédent Sommaire Chapitre suivant
Retour en haut Retour en haut


Créé : le 22/09/2006 à 15:59:54
Modifié : le 12/11/2008 à 20:56:05
Avancement : 100%
Licence : Copie non autorisée

2 commentaires

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 84 Zéros connectés | Requêtes SQL 8 requêtes | Temps de génération de la page : Total (SQL) 0.1329s (0.1221s)