Informations
Le sujet que vous avez demandé est indiqué ci-dessous. Toutefois, ce sujet ne figure pas dans la bibliothèque.

Définition de la compatibilité des documents

.NET Framework 3.0
Nouveautés de Windows Internet Explorer 8

Mis à jour : Février 2009

La compatibilité des documents définit la façon dont Internet Explorer affiche vos pages Web. Cet article explique la notion de compatibilité des documents, la façon de spécifier le mode de compatibilité des documents de vos pages Web et comment déterminer le mode de document d'une page Web.

Introduction

Pour garantir la cohérence du rendu de vos pages Web dans les futures versions d'Internet Explorer, Internet Explorer 8 introduit la notion de compatibilité des documents. Extension du mode de compatibilité présent dans Microsoft Internet Explorer 6, la compatibilité des documents vous permet de choisir le mode de rendu spécifique utilisé parInternet Explorer pour afficher vos pages Web.

Cet article explique l'utilité de la compatibilité des documents, liste les modes de compatibilité des documents disponibles pour les versions récentes d'Internet Explorer et indique comment sélectionner des modes de compatibilité spécifiques.

Comprendre l'utilité de la compatibilité des documents

Chaque version majeure d'Internet Explorer ajoute des fonctionnalités destinées à simplifier l'utilisation du navigateur, à augmenter la sécurité et à prendre en charge plus étroitement les normes industrielles. À mesure qu'Internet Explorer s'enrichit de fonctionnalités, les sites Web plus anciens risquent de ne plus s'afficher correctement.

Pour limiter ce risque, Internet Explorer 6 permettait aux développeurs de site Web de choisir la façon dont Internet Explorer devait interpréter et afficher leurs pages Web. Le « mode quirks » était la valeur par défaut ; il affichait les pages de la même manière que les versions antérieures du navigateur. Le « mode standard » (également appelé « mode strict ») assurait la prise en charge la plus complète des normes professionnelles ; toutefois, pour bénéficier de cette prise en charge améliorée, les pages Web devaient inclure une directive <!DOCTYPE>.

Si un site ne contenait pas de directive <!DOCTYPE>, Internet Explorer 6 affichait le site en mode quirks. Si un site contenait une directive <!DOCTYPE> valide que le navigateur ne reconnaissait pas, Internet Explorer 6 affichait le site en mode standard Internet Explorer 6. Comme peu de sites contenaient déjà la directive <!DOCTYPE>, le commutateur de mode de compatibilité rencontrait un grand succès. Il permettait aux développeurs Web de choisir le meilleur moment pour effectuer une migration de leurs sites vers le mode standard.

Avec le temps, de nombreux sites ont commencé à utiliser le mode standard. Ils ont également commencé à utiliser les fonctionnalités et le comportement d'Internet Explorer 6 pour détecter Internet Explorer. Par exemple, Internet Explorer 6 ne prenait pas en charge le sélecteur universel (page éventuellement en anglais) ; certains sites Web utilisaient ce moyen pour fournir du contenu spécifique à Internet Explorer.

Internet Explorer 7 offrait de nouvelles fonctionnalités, telles que la prise en charge du sélecteur universel, conçues pour une prise en charge plus exhaustive des normes professionnelles. La directive <!DOCTYPE> ne prenant en charge que deux paramètres (mode quirks et mode standard), le mode standard d'Internet Explorer 7 a remplacé le mode standard d'Internet Explorer 6.

Par conséquent, les sites qui utilisaient le comportement du mode standard d'Internet Explorer 6 (comme l'absence de prise en charge du sélecteur universel) ne pouvaient plus détecter la nouvelle version du navigateur. Le contenu spécifique d'Internet Explorateur n'était donc pas fourni à Internet Explorer 7 et ces sites ne s'affichaient pas comme prévu. Étant donné qu'Internet Explorer 7 ne prenait en charge que deux modes de compatibilité, les propriétaires des sites concernés ont été forcés de les mettre à jour pour prendre en charge ce nouveau navigateur.

Internet Explorer 8 assure une prise en charge plus complète des normes professionnelles que toutes les versions précédentes. Par conséquent, les sites conçus pour les versions antérieures du navigateur risquent de ne pas s'afficher comme prévu. Pour limiter les problèmes, Internet Explorer 8 introduit le concept de compatibilité des documents, qui vous permet de spécifier les versions d'Internet Explorer prises en charge par votre site. La compatibilité des documents ajoute de nouveaux modes à Internet Explorer 8 ; ces modes indiquent au navigateur comment interpréter et restituer un site Web. Si votre site ne s'affiche pas correctement dans Internet Explorer 8, vous pouvez soit mettre à jour le site pour prendre en charge les normes Web les plus récentes (solution préférable), soit forcer Internet Explorer 8 à afficher votre contenu comme s'il s'affichait dans une version plus ancienne du navigateur. Utilisez pour cela l'élément meta pour ajouter un en-tête X-UA-Compatible dans vos pages Web.

Cela vous permet de choisir le moment de mettre à jour votre site pour prendre en charge les nouvelles fonctionnalités offertes par Internet Explorer 8.

Fonctionnement des modes de compatibilité des documents

Internet Explorer 8 prend en charge plusieurs modes de compatibilité des documents, qui activent différentes fonctionnalités et qui peuvent influencer l'affichage du contenu.

  • Le mode Emulate IE8 indique à Internet Explorer qu'il faut utiliser la directive <!DOCTYPE> pour déterminer comment afficher le contenu. Les directives du mode standard sont affichées dans le mode standard d'Internet Explorer 8, alors que les directives du mode quirks sont affichées en mode IE5. Contrairement au mode IE8, le mode Emulate IE8 respecte la directive <!DOCTYPE>.

  • Le mode Emulate IE7 indique à Internet Explorer qu'il doit utiliser la directive <!DOCTYPE> pour déterminer comment afficher le contenu. Les directives du mode standard s'affichent en mode standard d'Internet Explorer 7, alors que les directives du mode quirks sont affichées en mode IE5. Contrairement au mode IE7, le mode Emulate IE7 respecte la directive <!DOCTYPE>. Ce dernier est le mode de compatibilité préféré de nombreux sites Web.

  • Le mode IE5 affiche le contenu comme s'il était affiché par le mode quirks d'Internet Explorer 7, ce qui ressemble beaucoup à l'affichage du contenu par Internet Explorer 5.

  • Le mode IE7 affiche le contenu comme s'il était affiché par le mode standard d'Internet Explorer 7, que la page contienne ou non une directive <!DOCTYPE>.

  • Le mode IE8 offre la prise en charge la plus élevée disponible des normes professionnelles, notamment la spécification W3C sur les feuilles de style en cascade niveau 2.1 (page éventuellement en anglais)  Lien World Wide Web et l'API de sélecteurs W3C (page éventuellement en anglais)  Lien World Wide Web, ainsi qu'une prise en charge limitée de la spécification W3C sur les feuilles de style en cascade niveau 3 (page éventuellement en anglais, document non définitif)  Lien World Wide Web.

  • Le mode contours indique à Internet Explorer d'afficher le contenu dans le mode le plus élevé disponible. Avec Internet Explorer 8, cela équivaut au mode IE8. Si une (hypothétique) version future d'Internet Explorer prenait en charge un mode de compatibilité supérieur, les pages paramétrées en mode contours s'afficheraient dans le mode le plus élevé pris en charge par cette version. Ces mêmes pages s'afficheraient toujours en mode IE8 si elles étaient affichées par Internet Explorer 8.

Les documents en mode contours affichant des pages Web en utilisant le mode le plus élevé que connaisse la version d'Internet Explorer utilisée pour les afficher, il est recommandé de limiter leur utilisation au test des pages ou à des fins autres que la production.

Spécification des modes de compatibilité des documents

Pour spécifier un mode de document pour vos pages Web, utilisez l'élément meta pour inclure un en-tête  http-equiv X-UA-Compatible dans votre page Web. L'exemple suivant spécifie la compatibilité du mode Emulate IE7.

<html>
<head>
  <!-- Mimic Internet Explorer 7 -->
  <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" >
  <title>My Web Page</title>
</head>
<body>
  <p>Content goes here.</p>
</body>
</html> 

L'attribut content spécifie le mode pour la page, par exemple, pour imiter le comportement d'Internet Explorer 7, spécifiez IE=EmulateIE7. Spécifiez IE=5, IE=7 ou IE=8 pour sélectionner l'un de ces modes de compatibilité. Vous pouvez également spécifier IE=edge pour dire à Internet Explorer 8 d'utiliser le mode le plus élevé disponible.

L'en-tête X-UA-compatible n'est pas sensible à la casse. Cependant, il doit s'afficher dans l'en-tête de la page Web (la section HEAD) avant tous les autres éléments, sauf l'élément title et les autres éléments meta.

Configuration de serveurs Web pour spécifier des modes de compatibilité par défaut

Les administrateurs de site peuvent configurer leurs sites par défaut avec un mode de compatibilité des documents spécifique en définissant un en-tête personnalisé pour le site. Ce processus spécifique dépend de votre serveur Web. Par exemple, le fichier web.config. suivant permet à Microsoft Internet Information Services (IIS) de définir un en-tête personnalisé qui restitue automatiquement toutes les pages en mode IE7.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <httpProtocol>
      <customHeaders>
        <clear />
        <add name="X-UA-Compatible" value="IE=EmulateIE7" />
      </customHeaders>
    </httpProtocol>
  </system.webServer>
</configuration> 

Si vous spécifiez un mode de compatibilité des documents par défaut à l'aide de votre serveur Web, vous pouvez ignorer ce paramètre en spécifiant un mode de compatibilité des documents différent dans une page Web spécifique. Le mode spécifié dans la page Web a priorité sur le mode spécifié par le serveur.

Consultez la documentation de votre serveur Web pour en savoir plus sur la spécification d'en-têtes personnalisés. Pour plus d'informations, voir aussi :

Détermination du mode de compatibilité des documents

Pour déterminer le mode de compatibilité des documents d'une page Web en utilisant Internet Explorer 8, utilisez la propriété documentMode (page éventuellement en anglais) de l'objet document (page éventuellement en anglais). Par exemple, si vous saisissez ce qui suit dans la barre d'adresse d'Internet Explorer 8, vous verrez s'afficher le mode de document de la page Web actuelle.

javascript:alert(document.documentMode);

La propriété documentMode renvoie une valeur numérique correspondant au mode de compatibilité des documents de la page. Par exemple, si une page a choisi de prendre en charge le mode IE8, documentMode renvoie la valeur 8.

La propriété compatMode (page éventuellement en anglais) introduite dans Internet Explorer 6 est désapprouvée en faveur de la propriété documentMode introduite dans Internet Explorer 8. Les applications qui reposent actuellement sur compatMode continuent de fonctionner dans Internet Explorer 8, mais doivent être mises à jour pour utiliser documentMode.

Si vous souhaitez utiliser JavaScript pour déterminer le mode de compatibilité d'un document, incluez le code qui prend en charge des versions antérieures d'Internet Explorer, comme dans l'exemple suivant.

engine = null;
if (window.navigator.appName == "Microsoft Internet Explorer")
{
   // This is an IE browser. What mode is the engine in?
   if (document.documentMode) // IE8
      engine = document.documentMode;
   else // IE 5-7
   {
      engine = 5; // Assume quirks mode unless proven otherwise
      if (document.compatMode)
      {
         if (document.compatMode == "CSS1Compat")
            engine = 7; // standards mode
      }
   }
   // the engine variable now contains the document compatibility mode.
}

Fonctionnement des valeurs de l'attribut content

L'attribut content est flexible car il accepte d'autres valeurs que celles décrites précédemment. Cela vous permet de mieux contrôler la façon dont Internet Explorer affiche vos pages Web. Par exemple, vous pouvez affecter à l'attribut content la valeur IE=7.5. Dans ce cas, Internet Explorer essaie de convertir la valeur en vecteur de version (page éventuellement en anglais) et sélectionne le mode plus proche de ce résultat. Internet Explorer sera alors configuré en mode IE7. Les exemples suivants montrent les modes sélectionnés pour d'autres valeurs en l'absence d'autres facteurs de réduction.

<meta http-equiv="X-UA-Compatible" content="IE=4">   <!-- IE5 mode -->
<meta http-equiv="X-UA-Compatible" content="IE=7.5" > <!-- IE7 mode -->
<meta http-equiv="X-UA-Compatible" content="IE=100" > <!-- IE8 mode -->
<meta http-equiv="X-UA-Compatible" content="IE=a" >   <!-- IE5 mode --> 

<!-- This header mimics Internet Explorer 7 and uses 
     <!DOCTYPE> to determine how to display the Web page -->
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" >    
Remarque :  L'exemple précédent montre les résultats des valeurs de contenu individuelles. En pratique, Internet Explorer respecte uniquement le premier en-tête X-UA-Compatible dans une page Web.

Vous pouvez également utiliser l'attribut content pour spécifier plusieurs modes de compatibilité des documents. Cela garantit un affichage cohérent de vos pages Web dans les futures versions du navigateur. Pour spécifier plusieurs modes de document, paramétrez l'attribut content de façon à identifier les modes que vous souhaitez utiliser. Séparez chaque mode par un point-virgule.

Si une version particulière d'Internet Explorer prend en charge plusieurs des modes de compatibilité demandés, elle utilisera le mode le plus élevé disponible répertorié dans l'attribut content de l'en-tête. Vous pouvez utiliser cette règle pour exclure des modes de compatibilité spécifiques, bien que cela ne soit pas recommandé. Par exemple, l'en-tête suivant exclut le mode IE7.

<meta http-equiv="X-UA-Compatible" content="IE=5; IE=8" >

Contrôle du rendu par défaut

Lorsqu'Internet Explorer 8 ouvre une page Web qui ne contient pas deX-UA-Compatible header, il utilise la directive <!DOCTYPE> pour déterminer comment afficher la page. Si la directive est absente ou ne spécifie aucun type de document standard, Internet Explorer 8 affiche la page en mode IE5 (mode quirks).

Si la directive <!DOCTYPE> spécifie un type de document standard, Internet Explorer 8 affiche la page en mode IE8, sauf dans les cas suivants :

  • L'Affichage de compatibilité est activé pour la page.

  • La page est chargée dans la zone intranet et Internet Explorer 8 est paramétré sur Affichage de compatibilité pour les pages de la zone intranet.

  • Internet Explorer 8 est configuré pour afficher tous les sites Web avec l'Affichage de compatibilité.

  • Internet Explorer 8 est configuré pour utiliser la Liste Affichage de compatibilité, qui spécifie un jeu de sites Web qui s'affichent toujours avec l'Affichage de compatibilité.

  • Les Outils de développement servent à remplacer les paramètres spécifiés dans la page Web.

  • La page Web a rencontré une erreur de disposition de page et Internet Explorer 8 est configuré pour effectuer une restauration automatique à la suite de ce type d'erreur en rouvrant la page en Affichage de compatibilité.

Pour plus d'informations, voir Blog Internet Explorer : récapitulation concernant l'Affichage de compatibilité (page éventuellement en anglais)  Lien World Wide Web.

Remarque :  S'il est configuré pour charger des pages intranet avec Affichage de compatibilité, Internet Explorer fait une exception pour les pages chargées à l'aide de l'adresse localhost ou d'une adresse loopback (page éventuellement en anglais). Les pages chargées à l'aide de l'une de ces techniques s'affichent en mode IE8 lorsque la directive <!DOCTYPE> spécifie un type de document standard.

De plus, la clé de Registre suivante vous permet de contrôler la manière dont Internet Explorer gère des pages qui ne contiennent pas d'en-tête X-UA-Compatible.

HKEY_LOCAL_MACHINE (or HKEY_CURRENT_USER)
     SOFTWARE
          Microsoft
               Internet Explorer
                    Main
                         FeatureControl
                              FEATURE_BROWSER_EMULATION
                                   iexplore.exe = (DWORD)

La valeur DWORD doit être égale à l'une des valeurs suivantes.

ValeurDescription
7000Les pages qui contiennent des directives <!DOCTYPE> standard sont affichées en mode IE7.
8000Les pages qui contiennent des directives <!DOCTYPE> standard sont affichées en mode IE8.
8888Les pages sont toujours affichées en mode IE8, indépendamment de la directive <!DOCTYPE>. (Cela contourne les exceptions listées précédemment.)

Par défaut, les applications qui hébergent le contrôle WebBrowser (page éventuellement en anglais) ouvrent les pages standard en mode IE7, à moins que la page ne contienne un en-tête X-UA-Compatible approprié. Vous pouvez modifier ce comportement en ajoutant le nom du fichier exécutable de l'application à la touche Contrôle de fonctionnalité FEATURE_BROWSER_EMULATION et en paramétrant la valeur en conséquence.

Conclusion

La compatibilité est un élément important pour les concepteurs Web. Bien qu'il soit préférable de créer des sites qui n'utilisent pas de comportements ou de fonctionnalités spécifiques d'un navigateur Web, cela n'est pas toujours possible. Le mode de compatibilité des documents lie une page Web au comportement d'une version spécifique d'Internet Explorer.

Utilisez l'en-tête X-UA-Compatible pour spécifier les versions d'Internet Explorer prises en charge par vos pages. Utilisez document.documentMode pour déterminer le mode de compatibilité d'une page Web.

En choisissant de prendre en charge une version spécifique d'Internet Explorer, vous pouvez garantir que vos pages s'afficheront de manière cohérente dans les futures versions du navigateur.

Voir aussi

Ajouts de la communauté

Afficher:
© 2014 Microsoft