5568 sujets

Sémantique web et HTML

Bonjour,

Il semble que cette syntaxe existe et soit valable:
<!--[IF !IE]>.......................<![ENDIF]-->


Etrange, non ?

Mes acquis me disent les commentaires sont supportés par I.E. jusqu'à la version 10 (non inclus il me semble). Les autres navigateurs ignorent tout bonnement le contenu de ceux-ci.


Quel pourrait-être le cas où nous souhaiterions faire lire le contenu d'un commentaire à un navigateur qui n'est pas IE lorsqu'on sait ce que je sais ?
Modifié par Greg_Lumiere (02 Mar 2016 - 16:03)
JENCAL a écrit :
peut être pour appliquer du style UNIQUEMENT quand c'est pas IE.

Ok, merci Jencal !

Sérieusement ?! Quel-que soit le navigateur (hors IE 9-) le commentaire est ignoré et n'apparait que dans la source.


Au risque de paraître impertinent, je réitère ma question.
Moi si je devais utiliser ce genre de chose, ça serais pour :

- Creer une feuille de style propre pour IE
- Ajouter ce hack CSS dans la même feuille de style sur certains élements pour ne pas les appliquer sur IE

à part ça... je laisse les autres répondres.
Bonsoir. L'intérêt principal du truc : tout le monde sait qu'Internet Explorer se comporte souvent de manière très différente dans son rendu par rapport aux autres navigateurs, soit en raison de son important retard technique (les versions d'IE, à peine sorties, sont rapidement dépassées par les autres navigateurs), soit en raison d'une volonté de vouloir imposer des standards qui lui sont propre, ce qu'il pouvait se permettre en raison de sa relative situation de monopole à un moment donné.

Tout ceci n'est plus vrais aujourd'hui avec IE10 (enfin... sauf pour le retard technique), et Microsoft a fait beaucoup d'efforts de standardisation dans le but de s'affilier le plus grand nombre de développeurs possible, une communauté importante étant gage de pérennité.

Reste que pour les anciennes versions de IE (9 et inférieures), l'écart avec les autres browsers peut justifier de trouver des moyens d'harmoniser le style avec les autres navigateurs. En général il s'agit surtout d'IE8, IE6 et IE7 étant, eux, largement obsolètes désormais (mais dans certaines administrations IE6 est encore présent pour des raisons de compatibilité avec de très vieux logiciels intranet).

Donc, afin de cibler ce navigateur récalcitrant, on peut utiliser les commentaires conditionnels pour créer des classes propres à IE. Exemple :
<!DOCTYPE html>
<!--[if IEMobile 7 ]> <html dir="ltr" lang="en-US"class="no-js iem7"> <![endif]-->
<!--[if lt IE 7 ]> <html dir="ltr" lang="en-US" class="no-js ie6 oldie"> <![endif]-->
<!--[if IE 7 ]>    <html dir="ltr" lang="en-US" class="no-js ie7 oldie"> <![endif]-->
<!--[if IE 8 ]>    <html dir="ltr" lang="en-US" class="no-js ie8 oldie"> <![endif]-->
<!--[if (gte IE 9)|(gt IEMobile 7)|!(IEMobile)|!(IE)]><!--><html dir="ltr" lang="en-US" class="no-js"><!--<![endif]-->

On voit ici que des classes sont ajoutées sur la balise <html> en lien avec des commentaires conditionnels pour IE. On pourra ainsi cibler spécifiquement une ou plusieurs version ancienne d'IE pour proposer un fallback :
.uneClasse {
  /* une règle */
}

.ie6 .uneClasse {
  /* une règle spécifique pour IE6 */
}
Ca n'a pas d'autre utilité que celle d'éjà évoquée: mettre en place des scripts ou des styles spécifiques à IE.

Par contre, les commentaires conditionnels n'ont plus énormément d'utilité aujourd'hui :
1. IE10+ les ignore comme tous les autres navigateurs modernes, donc ils n'ont plus d'utilité pour cibler IE10 et IE11.
2. IE6 et IE7 ont pratiquement disparu du monde, et IE8 est aussi bientôt dehors
3. Il n'y a plus besoin d'autant de hacks spécifiques à IE que jadis : IE9 supporte la majorité de EcmaScript5, SVG, HTML5 audio/video, et CSS 2.1.

Donc, la plupart des hacks odieux des anciens IE, dont celui-là, n'ont plus vraiment d'intérêt. Même si on n'a pas tous les derniers effets à la mode à disposition, si on fait les choses correctement, il n'y a pas tant de problèmes pour avoir un site basique tout de même un minimum utilisable avec IE9 et au pire IE10 (bien sûr on ne parle pas de jeux 3D ou de vidéoconférence P2P, ça va de soi, mais dans ce cas-là on mentionne la compatibilité et on assume). C'est pas comme à l'époque de IE6-8 où il y avait quand même de sérieuses limitations.
Merci pour vos explications toutefois je ne constate pas ces faits.

Quand je teste
<!--[if (gte IE 9)|(gt IEMobile 7)|!(IEMobile)|!(IE)]><!--><link><!--<![endif]-->
j'obtiens ceci :
- sur Firefox : chargement de la feuille de style
- IE 8 : chargement de la feuille de style
- IE 9 : idem
et pour 10 et 11 même résultat.

Ce qui me paraît logique car pour moi là le commentaire est refermé juste après son ouverture.

Par contre je n'ai pas pus tester une config IE mobile.


C'est pas la conditionnelle que je remets en cause ni l'utilité mais c'est l'introduction du symbole !IE dans la syntaxe dont je ne comprends pas l'intérêt.

Ne serait-ce pas une espèce de clin d'oeil à je ne sais quoi ? Là, ça m'échappe.
Modifié par Greg_Lumiere (02 Mar 2016 - 19:10)
QuentinC a écrit :
Donc, la plupart des hacks** odieux des anciens IE, dont celui-là, n'ont plus vraiment d'intérêt.

Je suis d'accords, d'ailleurs Html5 Boilerplate n'utilise plus cette méthode lui non plus, à l'exception d'un petit avertissement :
<!--[if lt IE 8]>
    <p class="browserupgrade">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p>
<![endif]-->


** @QuentinC : par contre, cette technique n'a jamais été un hack, même si dans l'utilisation que l'on en fait la plupart du temps elle s'y apparente. Enfin bon, je pinaille sur les mots... Smiley cligne
Modifié par Olivier C (03 Mar 2016 - 07:18)
a écrit :
** @QuentinC : par contre, cette technique n'a jamais été un hack, même si dans l'utilisation que l'on en fait la plupart du temps elle s'y apparente. Enfin bon, je pinaille sur les mots...


Ca dépend effectivement de la définition qu'on met derrière hack. Pour moi c'en est quand même une moitié.