Article de reference

Commentaire conditionnel

Les commentaires conditionnels sont des instructions conditionnelles interprétées par les versions 5 à 9 de Microsoft Internet Explorer dans le code source HTML . Ils peuvent êt...

Les commentaires conditionnels sont des instructions conditionnelles interprétées par les versions 5 à 9 de Microsoft Internet Explorer dans le code source HTML . Ils peuvent être utilisés pour fournir et masquer du code vers et depuis ces versions d'Internet Explorer. Les commentaires conditionnels ne sont pas pris en charge dans Internet Explorer 10 et 11 .

Les commentaires conditionnels en HTML sont apparus pour la première fois dans le navigateur Internet Explorer 5 de Microsoft, bien que leur prise en charge soit désormais obsolète. Dans Internet Explorer 10, les commentaires conditionnels HTML ne sont pas pris en charge lorsque la page est en mode standard (mode document 10). JScript ont été introduits dans Internet Explorer 4 et ont continué à être pris en charge dans Internet Explorer 10, en mode standard ou en mode compatibilité.

Exemples

Voici un exemple simple qui montre comment fonctionnent les commentaires conditionnels.

<!--[si IE 9]> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/respond.js/1.4.2/respond.js" integrity="sha512-BWbLJlfp8hzXlxT6K5KLdxPVAj+4Zn2e4FVq5P7NSFH/mkAJ18UiZRQUD4anR3jyp0/WYkeZ0Zmq5EWWrDxneQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script> 
<![endif]-->

Syntaxe

Il existe deux types de « commentaires conditionnels » : les commentaires révélés de niveau inférieur et les commentaires cachés de niveau inférieur .

La syntaxe de base de chaque type de commentaire est présentée dans le tableau suivant. Le premier commentaire affiché est le commentaire HTML de base, qui est inclus à des fins de comparaison et pour illustrer la syntaxe différente utilisée par chaque type de commentaire conditionnel.

Le code HTML affiché à l'intérieur du bloc de syntaxe dans chacun des commentaires conditionnels désigne tout bloc de contenu HTML, y compris le script. Les deux types de commentaires conditionnels utilisent une expression conditionnelle pour indiquer si le contenu à l'intérieur du bloc de commentaires doit être analysé ou ignoré. L'expression conditionnelle est formée d'une combinaison de fonctionnalité, d'opérateur et/ou de valeur, selon la fonctionnalité. Le tableau suivant présente les fonctionnalités prises en charge et décrit les valeurs prises en charge par chaque fonctionnalité.

Le tableau suivant décrit les opérateurs qui peuvent être utilisés pour créer des expressions conditionnelles.

Commentaire conditionnel masqué de niveau inférieur

Vous trouverez ci-dessous deux exemples de commentaire conditionnel « de niveau inférieur masqué » :

<!--[si IE 8]> 
<link href="ie8only.css"> 
<![endif]-->

ou

<!--[si lte IE 7]> 
<style type="text/css"> 
/* CSS ici */ 
</style> 
<![endif]-->

La directive du premier exemple permet à IE 8 de lire le fichier CSS spécifié, tandis qu'IE 7 ou les versions antérieures d'IE l'ignoreront. Les navigateurs autres qu'IE l'ignoreront également car il ressemble à un commentaire HTML standard. La balise du deuxième exemple permet aux versions 5.0 à 7 d'IE de lire le style CSS interne. Avec différentes utilisations de cette balise, vous pouvez également distinguer IE 6, IE 5 ou des versions d'IE plus récentes (supérieures) ou plus anciennes (inférieures) qu'une version spécifiée.

Commentaire conditionnel révélé au niveau inférieur

Vous trouverez ci-dessous un exemple de « commentaire » conditionnel « révélé de niveau inférieur », qui n'est pas du tout un commentaire (X)HTML , malgré son nom trompeur, utilisant la syntaxe Microsoft par défaut :

<![if !IE]> 
< link 
href = "non-ie.css" 
rel = "stylesheet" > 
<![endif]>

Cet exemple montre un contenu qui ne doit être exposé qu'aux navigateurs autres qu'IE, car la condition est évaluée à « false » sur IE (et donc le contenu est ignoré), tandis que les balises elles-mêmes ne sont pas reconnues (et donc ignorées) sur les navigateurs autres qu'IE. Il ne s'agit pas d'un code HTML ou XHTML valide.

Microsoft reconnaît que cette syntaxe n'est pas un balisage standardisé, et souhaite que ces balises soient ignorées par les autres navigateurs et exposent le contenu au milieu. Afin de garantir la conformité avec les normes W3C, certains développeurs Web utilisent une technique alternative pour les commentaires conditionnels révélés de niveau inférieur :

<!--[si !IE]>--> 
< lien 
href = "non-ie.css" 
rel = "stylesheet" > 
<!--<![endif]-->

Bien que quelque peu déroutante dans sa structure, cette syntaxe spécifique est valide en (X)HTML et est utile pour les sections conditionnelles destinées spécifiquement aux navigateurs non-IE ; si la condition est évaluée à true (par exemple, si vous écrivez du code destiné à s'afficher sur des navigateurs non-IE et sur certaines versions d'IE), IE affichera alors le -->présent avant le contenu HTML. Ce problème est facilement résolu en ajoutant le préfixe <!à l'initiale -->comme suit :

<!--[si gt IE 6]><!--> Ce code s'affiche sur les navigateurs non IE et sur IE 7 ou supérieur. <!--<![endif]-->

Le supplément <!est ignoré par les navigateurs non-IE, et il est également ignoré par IE quelle que soit la condition : si false , tout ce qui se trouve dans le commentaire conditionnel est ignoré, et si true , la balise résultante <!-->n'est pas reconnue et donc ignorée.

Commentaires conditionnels en JScript

À partir d'Internet Explorer 4, il existe un mécanisme propriétaire similaire pour ajouter des commentaires conditionnels dans JScript , connu sous le nom de compilation conditionnelle.

Exemples de code :

< script > 
/*@cc_on 
 document.write("Vous utilisez IE4 ou supérieur"); 
@*/ 
</ script >

Il y avait également plusieurs variables prédéfinies, bien que celles-ci ne soient plus fiables car Microsoft a modifié le moteur JScript d'IE6 avec XP SP3 et il indique désormais . Par conséquent, une méthode possible pour détecter la version d'Internet Explorer à l'aide de la compilation conditionnelle peut être vue ci-dessous : @_jscript_version==5.7

< script > 
/*@cc_on
 @if (@_jscript_version == 11) 
 document.write("Vous utilisez IE11 avec un mode document plus ancien"); 
 @elif (@_jscript_version == 10) 
 document.write("Vous utilisez IE10"); 
 @elif (@_jscript_version == 9) 
 document.write("Vous utilisez IE9"); 
 @elif (@_jscript_version == 5.8) 
 document.write("Vous utilisez IE8"); 
 @elif (@_jscript_version == 5.7) 
 document.write("Vous utilisez IE" + (!window.XMLHttpRequest ? 6 : 7)); 
 @elif (@_jscript_version == 5.6) 
 document.write("Vous utilisez IE6"); 
 @elif (@_jscript_version == 5.5) 
 document.write("Vous utilisez IE5.5"); 
 @elif (@_jscript_version < 5.5) 
 document.write("Vous utilisez une version antérieure à IE5.5"); 
 @else 
 document.write("Vous utilisez une version inconnue d'IE"); 
 @end 
@*/ </ script >

Cependant, la compilation conditionnelle n'est plus prise en charge dans le mode Standards d'Internet Explorer 11.

Plus d articles de Worldlex Wiki

Revenez a l index pour explorer davantage de pages sur l histoire, la science, la culture, la geographie et la societe en francais.

Explorer l index