Pourquoi utiliser IE = Edge compatible X-UA?

95

J'ai suivi plusieurs cours en ligne ces derniers temps et je vois encore certains instructeurs ajouter la balise Meta suivante en haut de leurs documents par défaut:

<meta http-equiv="X-UA-Compatible" content="IE=edge">

La pensée semble être que c'est tout aussi important et utile que <meta charset="UTF-8">.

Mais pourquoi?

Selon la documentation Modern.ie de Microsoft, il s'agit des «meilleures pratiques» qui «garantissent qu'Internet Explorer utilise le dernier moteur». OK très bien.

Cependant, si vous suivez le diagramme de flux sur MSDN, il montre clairement qu'un document sans `informations compatibles X-UA est transmis aux préférences" Affichage de compatibilité "de l'utilisateur, et si ce n'est pas défini, suivez simplement la déclaration! DOCTYPE .

En d'autres termes, à moins que l'utilisateur n'ait mis en place des paramètres d'affichage de compatibilité, IE suivra simplement votre! DOCTYPE et utilisera le dernier mode standard de votre navigateur pour le rendu de toute façon ... Pas besoin de X-UA-Compatible IE=Edgedéclaration du tout.

Comme MSDN le dit: « Utilisez la déclaration de type de document HTML5 pour activer le mode bord ».

Alors dans quelles circonstances est-il X-UA-Compatible IE=Edgenécessaire?

Chuck Le Butt
la source

Réponses:

153

Comme le souligne la réponse de @ David, à moins que vous n'hébergiez un site dans la zone "Intranet local", il y a très peu de raisons de l'inclure <meta http-equiv="X-UA-Compatible" content="IE=edge">dans vos pages Web, et (selon les recommandations de bonnes pratiques de Microsoft ) absolument aucune raison de l'inclure dans le HTML. (Vous devez le placer dans la configuration de votre serveur ou dans les en-têtes de site - pas dans le HTML lui-même.)

Si vous envisagez d'utiliser X-UA-Compatiblen'importe où dans votre projet, vous devez vous rappeler que la vue de compatibilité affecte uniquement IE8, 9 et 10. Elle n'a été introduite que dans IE8 et a été désactivée dans IE11.

Sachez également que IE11 est la seule version officiellement prise en charge d'IE pour le moment . Toutes les anciennes versions doivent être considérées comme non sécurisées.

Si ce n'était pas une raison suffisante pour vous convaincre de ne pas l'utiliser, considérez que Microsoft déclare<!DOCTYPE que IE8 et les versions ultérieures sont déjà automatiquement rendues en mode standard lorsqu'un est présent , ce qui le rend encore plus inutile.

Vous pouvez voir par vous-même le flux que IE prend pour décider du mode de document à utiliser:

entrez la description de l'image ici entrez la description de l'image ici

Comme vous pouvez le voir, si aucune X-UA-Compatiblebalise meta ou en-tête HTTP n'est présent, il vérifie les paramètres "Affichage de compatibilité" de l'utilisateur. Si l'utilisateur n'en a pas pour votre site Web, IE vérifie alors la présence d'une <!DOCTYPEdéclaration. S'il en trouve un, il utilise automatiquement le dernier mode standard (alias "EmulateIEx"). Si ce n'est pas le cas, il revient au mode Quirks.

Encore plus de raisons pour lesquelles vous ne devriez pas utiliser la balise meta "X-UA-Compatible" de Microsoft eux-mêmes (c'est moi qui souligne):

Lorsque Internet Explorer rencontre la balise META compatible X-UA, il recommence en utilisant le moteur de la version désignée. Il s'agit d'un problème de performances car le navigateur doit arrêter et redémarrer l'analyse du contenu.

En d'autres termes, cela ralentit le rendu de la page initiale

La directive compatible X-UA est un outil permettant aux applications de fonctionner dans la dernière version d'Internet Explorer pendant que des mises à jour sont apportées à l'application .

Il n'a jamais été conçu que pour un usage temporaire.

La meilleure pratique est un en-tête HTTP compatible X-UA . L'ajout de la directive à l'en-tête de réponse indique à Internet Explorer quel moteur utiliser avant de commencer l'analyse du contenu. Cela doit être configuré sur le serveur du site Web.

En d'autres termes, il existe de meilleures façons d'implémenter la compatibilité X-UA si vous en avez absolument besoin.

À compter du 12 janvier 2016, seule la version la plus récente d'Internet Explorer disponible pour un système d'exploitation pris en charge recevra une assistance technique et des mises à jour de sécurité. Internet Explorer 11 est la dernière version d'Internet Explorer et continuera de recevoir des mises à jour de sécurité, des correctifs de compatibilité et une assistance technique sur Windows 7, Windows 8.1 et Windows 10 .

IE11 est la seule version officiellement prise en charge d'IE .

La seule raison d'inclure la X-UA-Compatiblebalise Meta dans votre code HTML était de remplacer les paramètres "Affichage de compatibilité" d'un utilisateur dans IE8, 9 et 10 pour votre site Web. Dans presque tous les cas, l'utilisateur n'aura pas changé ces paramètres (pourquoi le feraient-ils?), Et maintenant ces navigateurs ne sont même plus pris en charge.

En bref: cette balise a fait son temps.

Chuck Le Butt
la source
17
Ces organigrammes sont fantastiques.
bennettp123
9
Juste une note, à partir d'aujourd'hui (16/10/2015), il est vrai que le bouton compat dans IE11 a disparu, mais il peut toujours être activé dans le menu Paramètres, il existe donc toujours comme possibilité. Nous l'utilisons aujourd'hui parce que notre logiciel Web est utilisé dans les intranets d'entreprise qui ont des systèmes hérités qui nécessitent le mode compat pour fonctionner, nous devons donc contourner cela. Un bon conseil sur l'en-tête HTTP, merci pour cela!
Doug Johnson
1
Comme il est toujours possible d'activer la vue de compatibilité dans IE11 et que les clients d'entreprise le font, l'en-tête / balise est toujours utile. Je peux voir pourquoi l'en-tête HTTP est supérieur, mais si la balise est au tout début du DOM, peu de mal est fait, et uniquement dans les navigateurs qui n'ont pas démarré en mode Edge. En tant que disposition uniquement pour l'utilisateur occasionnel coincé dans la vue de compatibilité, je ne pense pas que ce soit une mauvaise pratique d'utiliser la balise (en haut de <head>).
Tom Boutell
2
@ChuckLeButt Ou leur administrateur a fait cela "pour" eux via la stratégie de groupe. Encore une chose importante dans les contextes d'entreprise, où cela a été la plus grande victoire pour nous d'avoir un moyen de passer outre.
Tom Boutell
2
@ChuckLeButt Je vois votre point de vue et je n'ai pas le windows-fu pour le contredire ... et pourtant, notre client nous a dit qu'ils avaient IE11 en mode compat dans tous les domaines; comment ils l'ont obtenu, il n'y avait pas vraiment de connaissances partagées avec nous. Il est possible qu'ils l'aient en fait sur une liste explicite depuis le début.
Tom Boutell
18

Si l'utilisateur parcourt une page située dans la zone "Intranet local" (comme sur un intranet d'entreprise), la "vue de compatibilité" est activée par défaut. C'est alors que j'ai utilisé "X-UA-Compatible" pour forcer IE à utiliser le dernier moteur.

David
la source
Oui, cela semble être une utilisation valide, mais dans cette situation, vous voudrez probablement le mettre dans la configuration du serveur, ou dans les en-têtes du site de toute façon? stackoverflow.com/a/9338959/199700
Chuck Le Butt
1
Il y a également un changement causé en partie par l'abrogation de la vue de compatibilité par Microsoft. En plus de l'intranet local, si un domaine contient beaucoup de sous-domaines et d'applications, l'ajout de la vue de compatibilité pour un sous-domaine l'applique maintenant au domaine ENTIER (avant qu'il ne s'applique uniquement au sous-domaine spécifique). Donc, si vous n'avez qu'une seule application qui peut en avoir besoin, vous devez le faire pour toutes vos autres afin d'éviter les problèmes de support.
kilkenny
@ChuckLeButt, les en-têtes sont bons tant que vous êtes sur le réseau, mais si un utilisateur choisit d'enregistrer la page localement, il ne vous reste plus que les <meta>balises intégrées . C'est pourquoi il est généralement recommandé de répliquer également les en-têtes importants sous forme de <meta>balises.
ravilov
1

Tant qu'il est réglé sur «Edge», il est validé en HTML5, et on me dit que cela ne fait qu'Internet Explorer de nouveau rendre la page si le site l'a déjà rendu en mode de compatibilité. Pourtant, le mettre dans la configuration du serveur ( .htaccess, etc.) est mieux que de le mettre dans le HTML de chaque page.

Michael McGinnis
la source