Pas terrible ; mais presque
Si vous êtes développeur ou designer web, vous n’êtes pas sans savoir q’Internet Explorer 8 est sorti récemment ; cette nouvelle version a été bien accueillie par les acteurs du web pour saluer l’effort qu’à produit Micro$soft pour sortir un navigateur qui respecte les normes conçues par la W3C (Micro$oft à juste 8 ans de retard sur ses concurrents, de la part de la plus grosse entreprise d’informatique du monde, ça m’en bouche un coin), m’enfin, comme aurait dit Gaston…
Toujours est-il que IE8 nous arrive avec un double moteur sous le capot. En effet pendant des années nous autres designer avons lutter et braver les incohérences de rendu d’IE ; mais pis encore, des indélicats on conçut des sites qui ne sont correctement consultables QUE par IE7 (cas très répandue dans les intranets d’entreprises et d’administrations).
Donc pour « ne pas casser le Web » les développeurs de la version 8 on inclut à côté du nouveau moteur d’interprétation HTML, l’ancien d’IE7 (mais par défaut, c’est bien le nouveau moteur qui est utilisé) et une possibilité de passer de l’un à l’autre assez simplement (comme quoi à Redmond on peut faire des choses simples !).
Le mécanisme mis à disposition repose sur l’utilisation d’élément d’en-tête disposé soit dans la requête HTTP soit dans les balises méta. La directive dite « X-UA-Compatible » possède la syntaxe suivante :
en requête HTTP :
Header set X-UA-Compatible "IE=8"
ou dans les métas :
<meta http-equiv="X-UA-Compatible" content="IE=8" />
Si on spécifie IE=8
c’est le nouveau moteur qui est utilisé, si on utilise IE=EmulateIE7
c’est l’ancien moteur qui sera utilisé. Micro$soft à indiqué que ce mécanisme sera implémenté dans les futurs versions d’IE, il existe d’ailleurs une directive IE=Edge
qui indique que c’est le moteur le plus récent qui doit être utilisé (au cas où sortirait un IE9 encore meilleur…).
Par ailleurs, si aucune directive n’est présente dans le code de la page, alors IE8 fera apparaître dans la barre d’outil une icône permettant de basculer l’affichage en mode « IE7 ». Il existe aussi une « liste noire » qui peut être téléchargée ici, cette liste après installation permet à IE8 de basculer automatiquement vers le mode IE7 si vous naviguez sur l’un des 2400 domaine qu’elle contient. À noter aussi, et c’est très important, que les en-têtes (HTTP ou méta) ne fonctionnent correctement que si la page possède un DOCTYPE (je vous renvois à l’excellente traduction d’un article de Jeffrey Zeldman sur Pompage.net).
Tout cela parait presque parfait ; mais il faudra cependant faire attention à quelques petites choses, car la logique de la bascule entre mode IE8 et IE7 peut être légèrement modifiée en fonction du contexte :
X-UA-Compatible IE=EmulateIE7
, le bouton de compatibilité est caché et le moteur IE7 est utiliséX-UA-Compatible IE = EmulateIE7
via la balise méta mais que dans le code de la page une balise <script>
est utilisé avant la balise meta en question ; alors c’est le moteur standard qui est utilisé,X-UA-Compatible IE = 8
via l’en-tête HTTP et X-UA-Compatible IE = EmulateIE7
via la balise méta alors c’est cette dernière directive qui prévaut et c’est le moteur IE7 qui sera utilisé,En définitive, il est tout à fait possible de rencontrer IE8 envoyant de la chaîne User Agent IE7
au serveur en utilisant le mode Standards IE8 moteur de rendu et inversement. ce qui peut poser des problèmes si vous avez utilisez une feuille de styles spécifique à une ou plusieurs version d’IE en utilisant les commentaires conditionnels…
Donc nous verrons donc dans un prochain article, comment remettre les chose à plat proprement.
Note : cet article est une traduction libre d’un article écrit par Faruk Ate? sur son blog
Répondre
Vous devez être connecté pour poster un commentaire.