Internet Explorer 11 désactiver "afficher les sites intranet dans la vue de compatibilité" via la balise Meta ne fonctionne pas

100

Je travaille sur un site intranet depuis plus de 6 mois où j'utilisais la doctypebalise méta ci-dessous html5 et de compatibilité Edge pour forcer Internet Explorer à ne pas émuler une ancienne version du navigateur, et cela a bien fonctionné.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <title>My title</title>
    <meta http-equiv="X-UA-Compatible" content="IE=EDGE" />
</head>
<body>
</body>
</html>

La raison pour laquelle je le faisais de cette façon est que l'endroit où je travaille utilise un paramètre de stratégie pour activer l'affichage de compatibilité pour tous les sites intranet, et cette approche utilisant le EDGEparamètre a fonctionné dans Internet Explorer 9.

Paramètre d'affichage de compatibilité du site intranet

Il y a plus d'un mois, j'ai été mis à niveau vers Internet Explorer 11 et le site fonctionnait toujours comme prévu.

Aujourd'hui, cela a cessé de fonctionner comme prévu, je ne peux pas le dire avec certitude, mais je pense que la politique qui force la vue de compatibilité n'a pas été activée dans IE11 et maintenant elle l'est ... et depuis que cela a été activé, la balise meta de compatibilité n'est plus faire ce qui est attendu, et ce site est exécuté en mode Entreprise qui émule IE8.

Est-ce que quelqu'un sait comment résoudre ce problème et forcer IE11 à être utilisé sur un site intranet lorsque la compatibilité «Mode entreprise» est appliquée? et ne peut pas être désactivé via les paramètres du navigateur?

ÉDITER

Je viens d'essayer d'ajouter un en-tête personnalisé dans mon web.config comme expliqué dans cette réponse https://stackoverflow.com/a/18257208/98706

et cela n'a pas fonctionné pour moi, je reçois toujours le message ci-dessous dans la console de la barre d'outils du développeur de

HTML1122: Internet Explorer is running in Enterprise Mode emulating IE8.

C'est comme si la version 8 était traitée comme edgelorsque ce paramètre de compatibilité intranet est activé dans IE11.

Cet article: https://www.leapinggorilla.com/Blog/Read/1016/ie-ate-my-css---disabling-compatability-mode explique bien cela, je n'ai pas encore essayé de définir cet en-tête via le code et nos utilisateurs n'ont pas accès pour modifier les paramètres de leur navigateur. Aucune des autres modifications n'a encore fonctionné.

METTRE À JOUR

Veuillez consulter mon commentaire sur cet article sur la différence entre le mode Entreprise et le mode de compatibilité, car c'est important.

Cher
la source
Le mode entreprise est différent de la vue de compatibilité, veuillez consulter stackoverflow.com/a/26463309/98706 pour savoir comment le désactiver, mais dans mon cas, ce n'est pas aussi simple que de pouvoir le désactiver, je voulais le remplacer pour des sites intranet spécifiques en utilisant une balise meta mais cela n'a pas fonctionné, je n'ai pas réessayé depuis car nos sites sont maintenant sur une liste blanche.
Cher

Réponses:

93

Assure-toi:

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

est la première <meta>balise de votre page, sinon IE risque de ne pas la respecter.

Le problème peut également être que IE utilise le mode Entreprise pour ce site Web:

  • Votre question mentionnait que la console affiche: HTML1122: Internet Explorer is running in Enterprise Mode emulating IE8.
  • Si tel est le cas, vous devrez peut-être désactiver le mode entreprise (ou similaire ) ou le désactiver pour ce site Web à partir du menu Outils dans IE.
  • Cependant, le mode Entreprise devrait en théorie être remplacé par la balise compatible X-UA, mais IE pourrait avoir un bogue ...
moineau
la source
Oui, je l'ai déjà fait depuis, malheureusement cela n'a pas fonctionné :(
Cher
Il se peut que le mode Entreprise soit activé pour ce site Web (en fonction de votre question) ... J'ai mis à jour ma réponse, faites-moi savoir si cela aide
sparrowt
2
«Mode entreprise» et «Affichage de compatibilité» sont différents, bien que similaires. Même si "Afficher les sites intranet dans la vue de compatibilité" est coché, la balise compatible X-UA doit le remplacer. Cependant, le mode entreprise peut remplacer cela ... voyez-vous l'icône du mode entreprise ( media.askvg.com/articles/images5/… ) sur votre site?
sparrowt
1
Aussi que dit-il si vous appuyez sur F12 et regardez sur l'onglet d'émulation? Il devrait vous dire pourquoi il utilise le mode document. Je pense que vous utilisez le mode Entreprise, pas la vue de compatibilité.
sparrowt
19
C'est ainsi! @ # $ Ennuyeux, gaspillant des centaines de milliers d'heures de développeurs Web à travers le monde.
Sam Watkins
19

Ce problème est généralement causé par le placement de l'URL du site Web / intranet dans l'un des éléments suivants:

  • Liste des modes de compatibilité
  • Zone Intranet Internet Explorer
    (avec Afficher les sites intranet dans le paramètre Affichage de compatibilité activé)
  • Liste des modes d'entreprise

Sur les réseaux d'entreprise, ces paramètres d'affichage de compatibilité sont souvent contrôlés de manière centralisée via une stratégie de groupe . Dans votre cas, le mode Entreprise semble être le coupable.

Mode entreprise IE 11

Malheureusement, le réglage de META X-UA-Compatible ne remplacera pas cela.

Pour les utilisateurs finaux

Parfois, la seule façon pour les utilisateurs finaux de contourner cela est d'appuyer sur F12 et de changer le mode de document sous l' onglet Émulation . Cependant, ce paramètre n'est pas permanent et peut revenir une fois les outils de développement fermés.

Vous pouvez également essayer d'exclure votre site de la zone Intranet. Mais la liste des domaines qui appartiennent à la zone Intranet est généralement également contrôlée par la stratégie de groupe, de sorte que les chances que cela fonctionne sont minces.

Pour voir la liste des domaines appartenant à la zone Intranet, accédez à:

Outils -> Options Internet -> Sécurité -> Sites -> Avancé

Si la liste contient votre sous-domaine et est grisée, vous ne pourrez pas remplacer la vue de compatibilité tant que votre administrateur réseau ne l'autorisera pas.

Vous devez vraiment contacter votre administrateur réseau pour autoriser la modification des paramètres d'affichage de compatibilité dans la stratégie de groupe.

Pour les administrateurs réseau

Le chargement du site Web avec les outils de développement ouverts (F12) signalera souvent la raison pour laquelle IE passe à un mode plus ancien.

Les 3 paramètres mentionnés ci-dessus sont généralement contrôlés via la stratégie de groupe, bien qu'ils puissent parfois être remplacés sur les machines des utilisateurs.

Si le mode Entreprise est le problème (comme cela semble être le cas pour l'affiche originale), les deux articles suivants peuvent être utiles:

rustyx
la source
J'ai développé votre excellente réponse avec quelques détails supplémentaires que j'ai découverts lors de recherches récentes. J'espère que ça va.
Simon East
8

Pour ceux qui créent un projet ASP.NET MVC, assurez-vous d'ajouter:

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

tag dans votre page de mise en page (modèle). Je viens de passer deux heures à déboguer et à peaufiner, pour me rendre compte que je n'avais ajouté que cette balise Meta dans mes pages enfants. Dès que je l'ai ajouté à ma page de mise en page, le navigateur s'est parfaitement chargé en mode EDGE.

Jason Marsell
la source
Mon problème était lié à un nouveau mode Entreprise dans IE11 qui oblige le navigateur à émuler IE8. Ce n'est pas la même chose que le mode de compatibilité, qui est ce que cette balise meta est utilisée pour remplacer. J'utilisais cela correctement.
Pricey
Mon commentaire visait à aider d'autres personnes présentant les mêmes symptômes, qui construisent des sites dans ASP.NET MVC. Je ne m'adressais pas spécifiquement à vous.
Jason Marsell
La balise meta fonctionnera (pour les problèmes de mode de compatibilité, pas les problèmes de mode entreprise) pour les sites non .NET / MVC trop btw, ce n'est pas spécifique à ASP.NET
Dan Harris
4

La réponse marquée est la bonne. Cependant, Cher, vous devriez faire un suivi avec vos groupes d'administrateurs AD et de bureau. Ils abusent de la liste des sites IE11 Enterprise Mode. Microsoft n'a PAS l'intention de l'utiliser pour tous les sites intranet d'une organisation. Ce serait propager le paramètre existant «rendre tous les sites intranet en mode de compatibilité» qui est le fléau de l'avancement des sites Web d'entreprise dans le monde entier.

Il est destiné à être implémenté comme une «liste noire», avec la poignée de sites qui nécessitent en fait un mode de navigateur hérité répertorié dans la liste du mode entreprise avec leurs exigences de rendu spécifiées. Tous les autres sites de votre organisation sont ensuite libérés pour utiliser Edge. Les personnes de votre organisation qui l'ont implémenté avec tous les sites intranet inclus au départ ont complètement mal compris comment le mode Entreprise est censé être implémenté.

ch1nmuzak
la source
Oui, ils devraient certainement le faire, mais je n'ai malheureusement pas mon mot à dire sur la question, mais cela a été soulevé avec eux.
Cher
1

La question est un peu ancienne mais je viens de résoudre un problème très similaire. Nous avons plusieurs sites intranet ici, y compris celui dont je suis responsable, et les autres nécessitent un mode de compatibilité ou ils se cassent. Pour cette raison, les règles de site par défaut IE en mode de compatibilité sur les sites intranet. J'améliore mes propres affaires et n'en ai plus besoin; en fait, certaines des fonctionnalités que j'essaie d'utiliser ne semblent pas correctes en mode compat. J'utilise la balise meta IE-Edge comme vous.

IE suppose que les sites Web sans adresse complète sont intranet et agit en conséquence. Dans cet esprit, je viens de modifier les liaisons dans IIS pour n'écouter que l'adresse complète, puis j'ai créé un site Web factice qui écoutait l'adresse non qualifiée. Le second redirige tout le trafic vers l'adresse complète, faisant croire à IE qu'il s'agit d'un site externe. Le site s'affiche correctement avec ou sans la case Mode de compatibilité sur les sites intranet cochée.

Mike Anderson
la source
voir: stackoverflow.com/questions/2518256/… si vous avez un accès web.config.
fontophilic
J'ai vu cette question plus tôt mais je suppose que j'ai confondu la ligne d'en-tête HTTP pour la ligne META et j'ai pensé que je l'avais déjà essayée. Cela a bien fonctionné une fois que j'ai réglé cela. Merci de m'avoir signalé.
Mike Anderson
J'ai essayé d'appliquer le même paramètre EDGE de compatibilité dans la configuration Web et cela n'a pas fonctionné pour moi, le seul moyen que j'ai trouvé pour que cela fonctionne est de demander que nos sites Web spécifiques soient ajoutés à une liste blanche afin qu'ils soient ignorés du nouveau Mode IE11 Entreprise, qui semble être quelque chose de différent du mode de compatibilité. Ce n'est en aucun cas une bonne solution pour moi en raison des boucles que je dois franchir pour le faire à chaque fois.
Cher
On dirait que vous avez emprunté la même route que moi. Il y a 2 choses que je devais faire. 1 était le paramètre EDGE dans la balise META de la page. Vous pourrez peut-être le faire dans web.config (ou pas; je ne sais pas) mais je l'ai fait sur la page maître du site. L'autre ajoutait l'en-tête HTTP personnalisé à web.config.
Mike Anderson
1

C'est un vieux problème avec de bonnes informations. Mais ce que je viens de trouver, c'est que l'utilisation d'un FQDN désactive le mode de compatibilité dans IE 9 - 11. Exemple. J'ai le problème de
compatibilité avec http: // lrmstst01: 8080 / JavaWeb / login.do
mais les problèmes disparaissent avec
http://lrmstst01.mydomain.int:8080/JavaWeb/login.do
NB: Le .int fait partie de notre domaine interne

Dean P
la source
Ces liens ne sont pas valides. Ils sont utilisés comme exemple d'URL avec juste un nom d'ordinateur contre une avec un FQDN.
Dean P
2
Conseil de pro: Example.com existe uniquement dans ce but
base
C'est toujours un problème et ce commentaire n'ajoute rien à la solution.
Diana
0

Déplacez-le vers la zone Sites de confiance en l'ajoutant à une liste de sites de confiance ou à un paramètre local. Cela le déplacera hors de la zone intranet et ne sera pas rendu dans Compat. Vue.

Greg C.
la source
Ps Je sais que cela fonctionne parce que c'est ce que nous faisons dans mon entreprise pour les nouveaux produits basés sur un navigateur qui ne sont pas écrits avec des balises X-UA pour appliquer le rendu comme ils le souhaitent.
Greg C.
Étant donné qu'il s'agit probablement d'un paramètre à l'échelle de l'entreprise, votre réponse devrait être appliquée à la machine de chaque utilisateur, ce qui n'est guère idéal.
MattD
0

Ajoutez la propriété ci-dessous dans le fichier web.config pour les sites IIS. Cela a fonctionné pour moi sur mon intranet dans IE11.

<system.webServer>
  <httpProtocol>
    <customHeaders>
      <clear />
      <add name="X-UA-Compatible" value="IE=edge" />
    </customHeaders>
  </httpProtocol>
</system.webServer> 
user942620
la source
S'il vous plaît voir ma mise à jour sur le billet, le mode Entreprise et le mode de compatibilité sont 2 choses différentes
Cher
0

J'ai résolu ce problème en redirigeant l'utilisateur vers le FQDN du serveur hébergeant l'intranet.

IE utilise probablement le pire algorithme du monde pour détecter les sites "intranet" ... en effet, spécifier server.domain.tld résout le problème pour moi.

Oui, vous avez bien lu, IE détecte les sites intranet non par adresse IP privée, comme le ferait tout développeur ayant entendu parler de TCP / IP, non, par la partie "hôte" de l'URL, si elle n'a pas de partie domaine, doit être interne.

Effrayant de savoir que les développeurs IE ne comprennent pas les concepts TCP / IP les plus basiques.

Notez que c'était chez une GRANDE entreprise cliente, les amener à changer de GPO pour vous, c'est comme essayer de déplacer les Alpes de 4 mètres vers l'est, cela n'arrivera pas.

la carpe
la source
IE fait probablement une recherche DNS et connaît l'adresse IP à partir de cela. Comme il s'agit de MS, cela pourrait probablement faire de l'AD, mais DNS a plus de sens.
smoore4
@SQLDBA négatif, si vous spécifiez l'adresse IP, disons 10.0.0.1, l'hôte n'est PAS détecté en tant que site "intranet" ... rien à voir avec DNS, que voulez-vous dire avec AD? Voulez-vous dire qu'il se connecte à AD et recherche l'hôte là-bas? Cela n'a aucun sens, pourquoi ferait-il cela? Là encore, ils sont Microsoft pour une raison ™.
thecarpy
0

Pour ce que ça vaut, j'ai également eu le problème dans IE11:

  • Je n'étais pas en mode Entreprise.
  • La case "Afficher les sites intranet en vue de compatibilité" a été cochée.
  • J'avais tous les paramètres <!DOCTYPE html>et IE=Edgementionnés dans la question
  • Le meta header était en effet le 1er élément de l' <head>élément

Au bout d'un moment, j'ai découvert que:

  • l'en-tête de l'agent utilisateur envoyé au serveur était IE7 mais ...
  • la valeur JavaScript était IE11!

En - tête HTTP :

User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E) mais

JavaScript :

window.navigator.userAgent === 'Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; rv:11.0) like Gecko'

J'ai donc fini par faire le contrôle côté client.

Et BTW, quant à lui, la vérification de l'agent utilisateur n'est plus recommandée. Voir https://developer.mozilla.org/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent (mais il pourrait y avoir un bon cas)

Yann Vo
la source