Internet Explorer 11 deaktiviert "Intranetsites in der Kompatibilitätsansicht anzeigen" über ein nicht funktionierendes Meta-Tag

100

Ich arbeite seit über 6 Monaten an einer Intranet-Website, wo ich das folgende doctypeMeta-Tag für HTML5 und Edge-Kompatibilität verwendet habe, um Internet Explorer zu zwingen, keine ältere Browserversion zu emulieren, und dies hat in Ordnung funktioniert.

<!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>

Der Grund, warum ich es so gemacht habe, ist, dass der Ort, an dem ich arbeite, eine Richtlinieneinstellung verwendet, um die Kompatibilitätsansicht für alle Intranetsites zu aktivieren, und dieser Ansatz mit dieser EDGEEinstellung hat in Internet Explorer 9 funktioniert.

Einstellung für die Kompatibilitätsansicht der Intranetsite

Vor über einem Monat wurde ich auf Internet Explorer 11 aktualisiert und die Site funktionierte immer noch wie erwartet.

Heute hat dies nicht mehr wie erwartet funktioniert, ich kann nicht sicher sagen, aber ich denke, dass die Richtlinie, die die Kompatibilitätsansicht erzwingt, in IE11 nicht aktiviert wurde und jetzt ist es ... und da dies aktiviert wurde, ist das Kompatibilitäts-Meta-Tag nicht mehr Wenn Sie das tun, was erwartet wird, wird diese Site im Enterprise-Modus ausgeführt, der IE8 emuliert.

Weiß jemand, wie man das behebt und die Verwendung von IE11 auf einer Intranetsite erzwingt, wenn die Kompatibilität "Enterprise-Modus" erzwungen wird? und kann nicht über die Browsereinstellungen deaktiviert werden?

BEARBEITEN

Ich habe gerade versucht, einen benutzerdefinierten Header in meine web.config einzufügen, wie in dieser Antwort https://stackoverflow.com/a/18257208/98706 erläutert

und das hat bei mir nicht funktioniert Ich bekomme immer noch die folgende Meldung in der Entwickler-Symbolleisten-Konsole von

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

Es ist, als würde Version 8 so behandelt, als ob edgediese Intranet-Kompatibilitätseinstellung in IE11 aktiviert wäre.

Dieser Beitrag: https://www.leapinggorilla.com/Blog/Read/1016/ie-ate-my-css---disabling-compatability-mode erklärt dies gut. Ich habe noch nicht versucht, diesen Header über Code und zu setzen Unsere Benutzer haben keinen Zugriff darauf, ihre Browsereinstellungen zu ändern. Keine der anderen Änderungen hat bisher funktioniert.

AKTUALISIEREN

Bitte lesen Sie meinen Kommentar zu diesem Beitrag über den Unterschied zwischen Enterprise-Modus und Kompatibilitätsmodus, da dieser wichtig ist.

Teuer
quelle
Der Enterprise-Modus unterscheidet sich von der Kompatibilitätsansicht. Informationen zum Deaktivieren finden Sie unter stackoverflow.com/a/26463309/98706. In meinem Fall ist dies jedoch nicht so einfach wie das Deaktivieren. Ich wollte ihn für bestimmte Intranetsites überschreiben Ich habe es seitdem nicht mehr versucht, da unsere Websites jetzt auf einer Whitelist stehen.
Teuer

Antworten:

93

Stelle sicher:

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

ist das erste <meta>Tag auf Ihrer Seite, andernfalls respektiert der IE es möglicherweise nicht.

Alternativ kann das Problem sein, dass der IE den Enterprise-Modus für diese Website verwendet:

  • Ihre Frage erwähnte, dass die Konsole Folgendes anzeigt: HTML1122: Internet Explorer is running in Enterprise Mode emulating IE8.
  • In diesem Fall müssen Sie möglicherweise den Unternehmensmodus deaktivieren (oder wie folgt ) oder ihn für diese Website über das Menü Extras im IE deaktivieren .
  • Der Enterprise-Modus sollte jedoch theoretisch durch das X-UA-kompatible Tag überschrieben werden, aber der IE könnte einen Fehler haben ...
Sperling
quelle
Ja, das habe ich seitdem schon gemacht, leider hat es nicht funktioniert :(
Teuer
Es kann sein, dass der Enterprise-Modus für diese Website
aktiviert ist
2
"Enterprise Mode" und "Compatibility View" sind unterschiedlich, wenn auch ähnlich. Selbst wenn "Intranetsites in der Kompatibilitätsansicht anzeigen" aktiviert ist, sollte das X-UA-kompatible Tag dies überschreiben. Der Unternehmensmodus kann jedoch Folgendes außer Kraft setzen ... wird auf Ihrer Website das Symbol für den Unternehmensmodus ( media.askvg.com/articles/images5/… ) angezeigt ?
Sparrowt
1
Was sagt es auch, wenn Sie F12 drücken und auf die Registerkarte Emulation schauen? Es sollte Ihnen sagen, warum der Dokumentmodus verwendet wird. Ich denke, Sie aktivieren den Enterprise-Modus und nicht die Kompatibilitätsansicht.
Sparrowt
18
Das ist so! @ # $ Ärgerlich und verschwendet Hunderttausende von Stunden Webentwickler auf der ganzen Welt.
Sam Watkins
19

Dieses Problem wird im Allgemeinen dadurch verursacht, dass die Website- / Intranet-URL in einem der folgenden Bereiche abgelegt wird:

  • Liste der Kompatibilitätsmodi
  • Internet Explorer-Intranetzone
    (mit aktivierter Einstellung " Intranetseiten in Kompatibilitätsansicht anzeigen" )
  • Liste des Unternehmensmodus

In Unternehmensnetzwerken werden diese Einstellungen für die Kompatibilitätsansicht häufig zentral über Gruppenrichtlinien gesteuert . In Ihrem Fall scheint der Enterprise-Modus der Schuldige zu sein.

IE 11 Enterprise-Modus

Leider wird die Einstellung von META dies X-UA-Compatible nicht überschreiben .

Für Endbenutzer

Manchmal können Endbenutzer dies nur überschreiben, indem sie F12 drücken und den Dokumentmodus auf der Registerkarte Emulation ändern . Diese Einstellung ist jedoch nicht dauerhaft und kann nach dem Schließen der Entwicklertools zurückgesetzt werden.

Sie können auch versuchen, Ihre Site aus der Intranetzone auszuschließen. Die Liste der Domänen, die zur Intranetzone gehören, wird normalerweise auch von der Gruppenrichtlinie gesteuert, sodass die Wahrscheinlichkeit, dass dies funktioniert, gering ist.

Die Liste der Domänen, die zur Intranetzone gehören, finden Sie unter:

Extras -> Internetoptionen -> Sicherheit -> Websites -> Erweitert

Wenn die Liste Ihre Subdomain enthält und ausgegraut ist, können Sie die Kompatibilitätsansicht erst überschreiben, wenn Ihr Netzwerkadministrator dies zulässt.

Sie müssen sich wirklich an Ihren Netzwerkadministrator wenden, um die Einstellungen für die Kompatibilitätsansicht in der Gruppenrichtlinie ändern zu können.

Für Netzwerkadministratoren

Beim Laden der Website mit geöffneten Entwicklertools (F12) wird häufig der Grund angegeben, warum der IE in einen älteren Modus wechselt.

Alle drei oben genannten Einstellungen werden im Allgemeinen über Gruppenrichtlinien gesteuert, können jedoch manchmal auf Benutzercomputern überschrieben werden.

Wenn der Enterprise-Modus das Problem ist (wie es für das Originalposter der Fall zu sein scheint), können die folgenden zwei Artikel hilfreich sein:

Rustyx
quelle
Ich habe Ihre großartige Antwort um einige weitere Details erweitert, die ich während der letzten Forschung entdeckt habe. Ich hoffe das ist OK
Simon East
8

Stellen Sie für diejenigen, die ein ASP.NET MVC-Projekt erstellen, sicher, dass Sie Folgendes hinzufügen:

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

Tag in Ihre Layout (Seite) Seite. Ich habe gerade zwei Stunden mit Debuggen und Optimieren verbracht, nur um festzustellen, dass ich nur dieses Meta-Tag zu meinen untergeordneten Seiten hinzugefügt hatte. Sobald ich es meiner Layoutseite hinzugefügt habe, wurde der Browser im EDGE-Modus perfekt geladen.

Jason Marsell
quelle
Mein Problem war ein neuer Enterprise-Modus in IE11, der den Browser zwingt, IE8 zu emulieren. Es ist nicht dasselbe wie der Kompatibilitätsmodus, mit dem dieses Meta-Tag überschrieben wird. Ich habe das richtig benutzt.
Teuer
Mein Kommentar sollte anderen mit denselben Symptomen helfen, die Websites in ASP.NET MVC erstellen. Ich habe Sie nicht speziell angesprochen.
Jason Marsell
Das Meta-Tag funktioniert übrigens auch für Nicht-.NET / MVC-Sites (für Probleme mit dem Kompatibilitätsmodus, nicht für Probleme mit dem Enterprise-Modus). Es ist nicht spezifisch für ASP.NET
Dan Harris,
4

Die markierte Antwort ist die richtige. Pricey, Sie sollten dies jedoch mit Ihren AD- und Desktop-Administratorgruppen nachverfolgen. Sie missbrauchen die Site-Liste des IE11 Enterprise Mode. Microsoft beabsichtigt NICHT, es für alle Intranetsites innerhalb einer Organisation zu verwenden. Dies würde die bestehende Einstellung "Alle Intranetsites im Kompatibilitätsmodus rendern" verbreiten, die weltweit den Fluch der Weiterentwicklung von Unternehmenswebsites darstellt.

Es soll als "Schwarze Liste" implementiert werden, mit einer Handvoll Websites, für die tatsächlich ein älterer Browsermodus erforderlich ist, der in der Liste "Unternehmensmodus" aufgeführt ist und dessen Rendering-Anforderungen angegeben sind. Alle anderen Sites in Ihrer Organisation werden dann für die Verwendung von Edge freigegeben. Die Personen in Ihrer Organisation, die es zunächst mit allen enthaltenen Intranetsites implementiert haben, haben völlig falsch verstanden, wie der Unternehmensmodus implementiert werden soll.

ch1nmuzak
quelle
Ja, das sollten sie auf jeden Fall tun, aber ich habe leider kein Mitspracherecht, aber es wurde mit ihnen angesprochen.
Teuer
2

Dies ist ein altes Problem mit einigen guten Informationen. Was ich gerade gefunden habe, ist, dass die Verwendung eines FQDN den Kompatibilitätsmodus in IE 9-11 ausschaltet. Beispiel. Ich habe das Kompatibilitätsproblem mit
http: // lrmstst01: 8080 / JavaWeb / login.do,
aber die Probleme verschwinden mit
http://lrmstst01.mydomain.int:8080/JavaWeb/login.do.
NB: Die .int ist Teil von unsere interne Domain

Dean P.
quelle
Diese Links sind ungültig. Sie werden als Beispiel für eine URL mit nur einem Computernamen im Vergleich zu einer URL mit einem vollqualifizierten Domänennamen verwendet.
Dean P
1
Pro-Tipp: Example.com existiert nur für diesen Zweck
Basic
1

Die Frage ist etwas alt, aber ich habe gerade ein sehr ähnliches Problem gelöst. Wir haben hier mehrere Intranetseiten, einschließlich der, für die ich verantwortlich bin, und die anderen erfordern den Kompatibilitätsmodus oder sie brechen ab. Aus diesem Grund verwenden Site-Regeln den IE standardmäßig auf den Kompatibilitätsmodus für Intranetsites. Ich aktualisiere meine eigenen Sachen und brauche sie nicht mehr. Tatsächlich sehen einige der Funktionen, die ich verwenden möchte, im Kompatibilitätsmodus nicht richtig aus. Ich verwende das Meta-IE-Edge-Tag wie Sie.

IE geht davon aus, dass Websites ohne die vollqualifizierte Adresse Intranet sind, und handelt entsprechend. In diesem Sinne habe ich nur die Bindungen in IIS geändert, um nur die vollständig qualifizierte Adresse anzuhören, und dann eine Dummy-Website eingerichtet, die auf die nicht qualifizierte Adresse wartet. Der zweite leitet den gesamten Datenverkehr an die vollständig qualifizierte Adresse weiter, sodass der IE glaubt, dass es sich um eine externe Site handelt. Die Site wird mit oder ohne das Kontrollkästchen Kompatibilitätsmodus auf Intranetsites korrekt gerendert.

Mike Anderson
quelle
Siehe: stackoverflow.com/questions/2518256/…, wenn Sie Zugriff auf web.config haben.
fontophil
Ich habe diese Frage früher gesehen, aber ich glaube, ich habe die HTTP-Header-Zeile mit der META-Zeile verwechselt und dachte, ich hätte es bereits versucht. Es hat gut funktioniert, als ich das wieder in Ordnung gebracht habe. Danke, dass du mich darauf hingewiesen hast.
Mike Anderson
Ich habe versucht, dieselbe Kompatibilitäts-EDGE-Einstellung auf die Webkonfiguration anzuwenden, und es hat bei mir nicht funktioniert. Ich habe nur festgestellt, dass unsere spezifischen Websites zu einer weißen Liste hinzugefügt werden, damit sie von der neuen ignoriert werden IE11 Enterprise-Modus, der sich vom Kompatibilitätsmodus zu unterscheiden scheint. Dies ist keine gute Lösung für mich, da ich jedes Mal durch die Schleifen springen muss, um sie zu erledigen.
Teuer
Klingt so, als wären Sie den gleichen Weg gegangen wie ich. Ich musste zwei Dinge tun. 1 war die EDGE-Einstellung im META-Tag der Seite. Möglicherweise können Sie dies in web.config tun (oder nicht; ich weiß nicht), aber ich habe es auf der Site-Masterseite getan. Der andere war das Hinzufügen des benutzerdefinierten HTTP-Headers zu web.config.
Mike Anderson
0

Verschieben Sie es in die Zone "Vertrauenswürdige Sites", indem Sie es entweder einer Liste "Vertrauenswürdige Sites" oder einer lokalen Einstellung hinzufügen. Dadurch wird es aus der Intranetzone verschoben und nicht in Compat gerendert. Aussicht.

Greg C.
quelle
Ps Ich weiß, dass dies funktioniert, weil wir es in meinem Unternehmen für neuere browserbasierte Produkte tun, die nicht mit X-UA-Tags geschrieben sind, um das Rendern so zu erzwingen, wie sie es wollen.
Greg C.
Da dies wahrscheinlich eine unternehmensweite Einstellung ist, müsste Ihre Antwort auf die Maschine jedes Benutzers angewendet werden, was kaum ideal ist.
MattD
0

Fügen Sie die folgende Eigenschaft in die Datei web.config für IIS-Sites ein. Dies funktionierte für mich in meinem Intranet in IE11.

<system.webServer>
  <httpProtocol>
    <customHeaders>
      <clear />
      <add name="X-UA-Compatible" value="IE=edge" />
    </customHeaders>
  </httpProtocol>
</system.webServer> 
user942620
quelle
Bitte beachten Sie mein Update auf dem Ticket, Enterprise-Modus und Kompatibilitätsmodus sind zwei verschiedene Dinge
teuer
0

Ich habe dieses Problem gelöst, indem ich den Benutzer zum vollqualifizierten Domänennamen des Servers umgeleitet habe, auf dem sich das Intranet befindet.

IE verwendet wahrscheinlich den weltweit schlechtesten Algorithmus zum Erkennen von "Intranet" -Sites ... in der Tat löst die Angabe von server.domain.tld das Problem für mich.

Ja, Sie haben richtig gelesen, dass der IE Intranetsites nicht anhand der privaten IP-Adresse erkennt, wie es jeder Entwickler tun würde, der von TCP / IP gehört hat. Nein, der "Host" -Teil der URL muss, wenn er keinen Domain-Teil hat, dies tun intern sein.

Es ist beängstigend zu wissen, dass die IE-Entwickler die grundlegendsten TCP / IP-Konzepte nicht verstehen.

Beachten Sie, dass dies bei einem großen Unternehmenskunden der Fall war. Wenn Sie ihn dazu bringen, das Gruppenrichtlinienobjekt für Sie zu ändern, ist dies wie der Versuch, die Alpen um 4 Meter nach Osten zu verschieben, was nicht passieren wird.

thecarpy
quelle
IE führt wahrscheinlich eine DNS-Suche durch und kennt die IP daraus. Da es sich um MS handelt, könnte es wahrscheinlich AD ausführen, aber DNS ist sinnvoller.
smoore4
@SQLDBA negativ, wenn Sie die IP angeben, z. B. 10.0.0.1, wird der Host NICHT als "Intranet" -Site erkannt ... nichts mit DNS zu tun, was meinen Sie mit AD? Meinst du, es stellt eine Verbindung zu AD her und sucht dort den Host? Macht keinen Sinn, warum sollte es das tun? Andererseits sind sie aus einem bestimmten Grund Microsoft.
Thecarpy
0

Für das, was es wert ist, hatte ich das Problem auch in IE11:

  • Ich war nicht im Enterprise-Modus.
  • Die Option "Intranetsites in der Kompatibilitätsansicht anzeigen" wurde aktiviert.
  • Ich hatte alle <!DOCTYPE html>und IE=EdgeEinstellungen in der Frage erwähnt
  • Der Meta-Header war in der Tat das erste Element im <head>Element

Nach einer Weile fand ich heraus, dass:

  • Der an den Server gesendete User Agent-Header war IE7, aber ...
  • Der JavaScript-Wert war IE11!

HTTP-Header :

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

JavaScript :

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

Also habe ich die Prüfung auf der Client-Seite durchgeführt.

Übrigens wird die Überprüfung des Benutzeragenten nicht mehr empfohlen. Siehe https://developer.mozilla.org/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent (aber es kann einen guten Fall geben)

Yann Vo
quelle