· Tech watch

X-UA-Compatible : danger ou opportunité ?

Après 10 ans de règne d’Internet Explorer et un succès d’adoption en demi-teinte pour son successeur, Internet Explorer 7, Microsoft a fort à faire pour convaincre avec Internet Explorer 8.

La firme de Redmond est confronté à ce fâcheux dilemne :

  • considérer ses clients existants
  • réagir aux pressions exercées par la concurrence, Firefox en tête

On peut à ce titre saluer le choix de Microsoft d’enfin embrasser les standards du Web. La huitième version de son navigateur Web adoptera ainsi par défaut une interprétation respectant ces standards (HTML, XHTML, CSS 2, partiellement CSS 3).
_ Ce choix a notamment été facilité par la proposition d’une nouvelle balise propriétaire : X-UA-Compatible.

Solution de facilité ou excellent compromis ?

Internet Explorer 6 : retour de boomerang

Si les développeurs de sites Web « pour Internet Explorer 6 » ont pu se réjouir d’un certain laxisme d’interprétation des standards du Web, ils vont payer dès demain le prix d’une catastrophe annoncée.
_ Des milliers (des millions ?) de sites Web et des milliers d’applications spécifiques reposent ou ont été conçues uniquement pour Internet Explorer 6. Ce navigateur n’est désormais plus supporté par Microsoft et ce dernier pousse les utilisateurs à adopter au moins Internet Explorer 7. Il faudra cependant disposer de Windows XP et son Service Pack 2 pour en « profiter ».

Mais alors, que faire de ses sites et applications vouées à une double obsolescence : la leur et celle de leur navigateur compatible ?

La solution X-UA-Compatible

En adoptant par défaut le support des standards avec Internet Explorer 8, Microsoft ne pouvait pas fermer la porte à sa base de clients et d’utilisateurs.
_ Au lieu de les flouer et de les ignorer, une nouvelle balise HTML propriétaire pourra être incluse dans l’entête de toutes les pages HTML : X-UA-Compatible.

_ Cette entête pourra également être renvoyée par le biais d’une entête HTTP par votre serveur Web favori.

Par « propriétaire », j’entends que seul Internet Explorer 8 (et peut-être ses successeurs) sera en mesure d’interpréter la valeur de cette balise. Elle est fort heureusement respectueuse du standard HTML et n’empêchera donc pas vos pages Web de passer au validateur sans provoquer d’erreur.

Cette balise a pour effet d’indiquer à Internet Explorer quel moteur de rendu utiliser. Autrement dit c’est le site/application Web qui influe sur le comportement schizophrénique du navigateur et en aucun cas l’utilisateur final.
_ Si Internet Explorer 8 ne rencontre pas cette balise, il utilisera son moteur de rendu respectueux des standards. Autrement, il basculera dans le mode d’interprétation correspondant à la version spécifiée, à savoir Internet Explorer 6 ou Internet Explorer 7.

Il faut toutefois avoir en tête que cette bascule n’affecte pas que l’interprétation d’HTML mais aussi celles des CSS et de JavaScript.
_ Autrement dit, si vous décidiez un jour d’enlever la balise X-UA-Compatible, il y a de très fortes chances que vous souscriviez à une grosse couche de recettage fonctionnel, tant du côté CSS que JavaScript.

Les options de compatibilité, le casse-tête

Microsoft propose 3 modes de rendu :
-# IE=7 pour forcer tout type de rendu en respect des standards à la sauce IE7 (respect approximatif donc) ;
-# IE=EmulateIE7 pour respecter les standards sauf quand la page est moisie (le fameux mode Quirks). Autrement dit, un Internet Explorer 8 déguisé en IE7 ;
-# IE=EmulateIE8 pour respecter les standards (mais vraiment) sauf quand la page est moisie. Autrement dit un Internet Explorer 8 avec quelques laxismes.

Si on compte avec ça la possibilité pour l’utilisateur de basculer de lui-même vers un mode de rendu « dégradé », difficile de choisir la moindre balise à appliquer.

Le navigateur sera cependant strictement compatible par défaut (pas besoin d’ajouter la moindre entête ou balise pour cela).

Quelle stratégie adopter pour ses sites Web ?

Si la présence de cette balise est en soi une bonne nouvelle, il convient de se poser les bonnes questions : X-UA-Compatible ne doit pas permettre à l’errance Internet Explorer de se reproduire à nouveau. La facilité ne doit pas être le seul facteur à envisager.

Voici quelques intérêts à utiliser X-UA-Compatible :

  • manque de compétences internes sur HTML/XHTML et CSS
  • besoin rapide d’adapter l’existant au nouveau logiciel
  • parc d’applications non-maîtrisé ou doté d’une politique de mise à niveau stricte
  • pas de budget pour redévelopper le site/application Web
  • la refonte du site/application aboutira plus tard que le déploiement d’Internet Explorer 8

Vous remarquerez que je n’aborde en aucun cas la question des nouveaux sites et applications et/ou leur refonte. Ceci pour la simple et bonne raison suivante : X-UA-Compatible est un palliatif à court-terme pour conserver un maximum d’applications fonctionnelles en attendant leur adoption des standards.
_ Il y a de très fortes chances que cette balise ne soit plus prise en compte dans la version 9 du navigateur ; tout du moins, je l’espère fortement.

En clair et pour résumer en 2 lignes :
-# X-UA-Compatible n’est à utiliser que sur des sites existants, peu conformes aux standards et nécessitant une compatibilité maximale très rapide avec Internet Explorer 8
-# les refontes doivent impérativement se concentrer sur les standards et agir comme si X-UA-Compatible n’existait pas

Conclusion : l’avenir passe par les standards

Si ce résumé éveille des craintes au plus profond de vous-même, sachez qu’il n’est pas trop tard. Comme tout choix logiciel ou matériel, il faut anticiper à moyen et long terme en évitant de s’enfermer dans une solution totalement fermée.
_ Les 99 % des parts de marché d’Internet Explorer d’antan sont la preuve même qu’on ne peut se reposer sur un taux d’adoption mais bel et bien sur une base qualitative saine : le Web de demain sera sur vos ordinateurs, vos PDA, vos téléphones mobiles, vos téléviseurs, vos frigos, vos montres, vos consoles de jeux et même vos murs et tables basses. Dans tous les cas, la garantie que vos sites et applications fonctionnent c’est le respect des standarts ; les standards du Web, pas ceux définis par Internet Explorer 6.

X-UA-Compatible est une solution à court terme, en aucun cas une fin en soi ou une garantie de pérennité.

10 commentaires

  1. Olivier Mansour

    Merci thomas pour cet éclairage. Quand tu parles de la compatiblité d’IE8 vis à vis des standards, est ce sur la base de déclaration de Microsoft ? ou sur la base de tests réalisés via des bétas d’IE 8 ?

    Content de voir que IE ne sera peut plus un jour le cauchemar des développeurs web !

  2. Thomas Parisot

    @Olivier (facile t’es le seul) : quand je parle de respect des standards, c’est par rapport aux déclarations de Microsoft. Quand j’ai écris l’article, il n’y avait que la Beta 1 que j’ai survolé. L’UI a changé mais pour moi c’était encore de l’IE7+.

    Je pense que Microsoft fait des efforts pour respecter les standards. J’aurais tendance à dire qu’ils n’ont plus le choix.

    Par contre son adoption dépendra énormément des ventes de Vista (vu qu’IE8 ne sera pas délivré sur XP) et de son successeur.

  3. Victor Brito

    IE 8 sera également disponible sous Windows XP, sous les mêmes conditions qu’IE 7 (à savoir que le SP 2 au moins est requis).

  4. Thomas Parisot

    @Victor Brito IE8 en-dessous du XP SP2 j’y crois pas trop. Mais ça serait un geste fort de Microsoft pour balayer la poussière sous son tapis.

  5. Roooh la grossière erreur faite dans ce post, indigne d’un professionel du web…

    X-UA-Compatible n’est pas une nouvelle balise HTML ! C’est une nouvelle propriété d’entête HTTP ! Rien à voir avec HTML donc.

    Le fait qu’on puisse l’indiquer AUSSI dans une meta de type http-equiv ne fait pas de X-UA-compatible une nouvelle balise…

  6. Thomas Parisot

    @Laurent ouh je tremble ! Je vais devenir jardinier demain pour laver cet affront.

    Une bonne formulation aurait été « Thomas, je suis d’accord sur ton article mais tu manques de précision sur cette fameuse balise : il s’agit seulement d’une entête HTTP que l’on peut déclarer, entre autre, via une balise META de type http-equiv ».

    Du coup j’y répondrai pas car c’est quand même sympa de pouvoir discuter avec quelqu’un qui a un minimum de savoir-vivre.

    À bon entendeur.

  7. Je voulais seulement dire qu’apparemment, IE8 ne supportera toujours pas le XHTML.

    Les documents sont interprétés par leur type MIME (défini par l’en-tête Content-Type), pas par leur contenu. Si on envoie un document avec le type text/html, quel que soit le doctype spécifié, il sera interprété comme du HTML. Pour le XHTML, il faut le type text/xml ou application/xml (préférable), et IE ne sait pas quoi faire avec ces fichiers: au lieu de les afficher, il les fait télécharger.

    Le test est simple. Réalisez un document XHTML non-conforme (une balise non-fermée, par exemple). Normalement, c’est une erreur fatale pour le parser XML, qui devrait être utilisé pour le XHTML. Si vous envoyez le document avec text/html, il va pourtant fonctionner sur tous les navigateurs. Par contre, si vous l’envoyez avec application/xml, une erreur sera produite pour tous les navigateurs respectant les standards (et Internet Explorer refusera obstinément d’afficher le document).

  8. « Si Internet Explorer 8 ne rencontre pas cette balise, il utilisera son moteur de rendu respectueux des standards. Autrement, il basculera dans le mode d’interprétation correspondant à la version spécifiée, à savoir Internet Explorer 6 ou Internet Explorer 7. »

    en fin de compte c’est tout le contraire… le seul moyen d’utiliser le moteur d’IE8 est d’ajouter cette fichue balise…

  9. Et finalement, quelle mode faut-il utiliser pour avoir un rendu IE6 ?

    J’imagine que c’est « IE=EmulateIE7 ». Mais cela garantit-il un rendu IE6 ? Quel est le retour d’expérience là-dessus ?

Les commentaires sont désormais fermés.