L'article en question distingue deux types de mode : le mode navigateur (browser mode) et le mode document (document mode).

Le mode navigateur

Le mode navigateur détermine la chaîne d'agent utilisateur envoyée par IE 9. En effet, ce dernier peut envoyer une chaîne d'agent utilisateur différente selon le mode navigateur utilisé, dont voici la liste :

  • IE 9 : ce mode envoie la chaîne d'agent utilisateur par défaut d'IE 9, qui correspond au mode de rendu le plus strictement standard d'IE 9 (c'est le mode par défaut) ;
  • IE 9 Compatibility View : ce mode envoie une chaîne d'agent utilisateur comme s'il s'agissait d'IE 7, à ceci près que la chaîne comporte l'indication Trident/5.0 indiquant qu'il s'agit bien d'IE 9 ;
  • IE 8 : ce mode envoie une chaîne d'agent utilisateur comme s'il s'agissait d'IE 8 ;
  • IE 7 : ce mode envoie une chaîne d'agent utilisateur comme s'il s'agissait d'IE 7.

Le mode document

IE 9 fournira, pour l'affichage des documents Web, les modes de rendu suivants :

  • le mode standard d'IE 9, qui correspond au respect le plus strict possible des standards du Web tels qu'IE 9 les implémentera et s'applique aux documents pourvus d'un doctype strict ou inconnu (ce sera le mode de rendu par défaut) ;
  • le mode standard d'IE 8, qui correspond au respect des standards du Web selon IE 8 et s'applique aux documents pourvus d'un doctype strict ou inconnu ;
  • le mode standard d'IE 7, qui correspond au respect des standards du Web tel qu'observé par IE 7 et s'applique aux documents pourvus d'un doctype en bonne et dûe forme ou d'un doctype inconnu ;
  • le mode Quirks, qui s'applique aux documents dépourvus d'un doctype ou pourvus d'un doctype tronqué ou antérieur à HTML 4 (il ne faudrait pas exclure d'y ajouter le cas de la présence de code avant le doctype et autre que la déclaration XML).

À ces modes, il conviendrait d'ajouter le mode presque standard, appliqué aux documents pourvus d'un doctype HTML 4 ou XHTML 1.0 en mode transitionnel.

Le changement de mode de rendu

À l'instar d'IE 8, IE 9 pourra changer de mode de rendu par l'envoi d'un en-tête au serveur : l'en-tête X-UA-Compatible.

IE 9 prendra en charge les en-têtes X-UA-Compatible déjà existants sous IE 8 :

  • <meta http-equiv="X-UA-Compatible" content="IE=5" />, qui fait basculer dans le mode Quirks d'IE 7 ;
  • <meta http-equiv="X-UA-Compatible" content="IE=7" />, qui fait basculer dans le mode standard d'IE 7 sans tenir compte du doctype switching (autrement dit, pas d'utilisation du mode Quirks) ;
  • <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />, qui fait basculer dans le mode standard d'IE 7 ou en mode Quirks s'il y a doctype switching ;
  • <meta http-equiv="X-UA-Compatible" content="IE=8" />, qui fait basculer dans le mode standard d'IE 8 sans tenir compte du doctype switching ;
  • <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" />, qui fait basculer dans le mode standard d'IE 8 ou en mode Quirks s'il y a doctype switching ;
  • <meta http-equiv="X-UA-Compatible" content="IE=edge" />, qui fait basculer dans le mode de rendu correspondant à la version la plus récente disponible.

En outre, IE 9 prendra en charge deux nouveaux en-têtes :

  • <meta http-equiv="X-UA-Compatible" content="IE=9" />, qui fait basculer dans le mode standard d'IE 9 sans tenir compte du doctype switching ;
  • <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9" />, qui fait basculer dans le mode standard d'IE 9 ou en mode Quirks s'il y a doctype switching.

Bien entendu, ces en-têtes pourront être envoyés côté serveur. En PHP, on pourra les envoyer comme suit :

<?php
header ('X-UA-Compatible: IE=EmulateIE9');
>php

Il sera même possible d'envoyer plusieurs valeurs pour cet en-tête, pour traiter différemment IE 8 et IE 9. Par exemple, si l'on souhaite qu'IE 9 applique son mode de rendu standard, mais qu'IE 8 bascule en mode de rendu compatible avec IE 7, on enverra l'en-tête suivant : <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7; IE=EmulateIE9" />, chaque valeur étant séparée par un point-virgule.

Si vous vous sentez un peu perdu entre toutes ces valeurs possibles pour l'en-tête X-UA-Compatible, rassurez-vous : le mieux est de ne pas se casser la tête et de coder dans le respect des standards du Web, en prenant le risque de casser le Web. Si, comme moi, vous respectez le plus strictement possible les standards, alors, comme le jour où IE 8 a pointé le bout de son nez, vous vous rendrez compte qu'une fois encore, le meta switching n'est pas pour nous. ;)