Ich arbeite seit über 6 Monaten an einer Intranet-Website Dort habe ich den untenstehenden html5 doctype
- und Edge-Kompatibilitäts-Meta-Tag verwendet, um zu erzwingen, dass Internet Explorer keine ältere Browserversion emuliert, und dies hat 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 das so gemacht habe, ist der, dass der Bereich, an dem ich arbeite, eine Richtlinieneinstellung verwendet, um die Kompatibilitätsansicht für alle Intranetsites zu aktivieren, und dass dieser Ansatz mit der Einstellung Edge
in Internet Explorer 9 funktioniert hat.
Vor über einem Monat wurde ich auf Internet Explorer 11 aktualisiert und die Website funktionierte weiterhin wie erwartet.
Heute funktionierte das nicht mehr wie erwartet, ich kann es nicht mit Bestimmtheit 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 was erwartet wird, und diese Site wird im Enterprise-Modus ausgeführt, der IE8 emuliert.
Kann jemand das Problem beheben und die Verwendung von IE11 auf einer Intranetsite erzwingen, wenn die Kompatibilität "Enterprise-Modus" erzwungen wird? und kann nicht über die Browsereinstellungen deaktiviert werden?
EDIT
Ich habe gerade versucht, einen benutzerdefinierten Header in meiner web.config hinzuzufügen, wie in dieser Antwort beschrieben https://stackoverflow.com/a/18257208/98706
und das hat bei mir nicht funktioniert Ich bekomme immer noch die untenstehende Meldung in der Entwickler-Symbolleisten-Konsole von
HTML1122: Internet Explorer is running in Enterprise Mode emulating IE8.
Es ist, als würde Version 8 als Edge
behandelt, wenn diese Intranet-Kompatibilitätseinstellung in IE11 aktiviert ist.
Dieser Beitrag: https://www.leapinggorilla.com/Blog/Read/1016/ie-ate-my-css---disabling-compatability-mode Erklärt dies gut, ich habe es noch nicht Es wurde versucht, diesen Header über Code einzustellen, und unsere Benutzer haben keinen Zugriff auf ihre Browsereinstellungen. Keine der anderen Änderungen hat bisher funktioniert.
UPDATE
In meinem Kommentar zu diesem Beitrag finden Sie den Unterschied zwischen dem Enterprise-Modus und dem Kompatibilitätsmodus, da dies wichtig ist.
Stelle sicher:
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
ist das erste <meta>
-Tag auf Ihrer Seite. Andernfalls wird es von IE möglicherweise nicht beachtet.
Alternativ kann das Problem sein, dass IE Enterprise Mode für diese Website verwendet:
HTML1122: Internet Explorer is running in Enterprise Mode emulating IE8.
Dieses Problem wird im Allgemeinen dadurch verursacht, dass die Website-/Intranet-URL in einer der folgenden Adressen abgelegt wird:
In Unternehmensnetzwerken werden diese Einstellungen für die Kompatibilitätsansicht häufig zentral über group policy gesteuert. In Ihrem Fall scheint Enterprise Mode der Täter zu sein.
Leider ist die Einstellung von META X-UA-Compatible
wird nicht überschrieben dies.
Die einzige Möglichkeit für Endbenutzer, dies zu überschreiben, besteht manchmal darin, F12 zu drücken und den Document-Modus unter der Registerkarte Emulation zu ändern. Diese Einstellung ist jedoch nicht dauerhaft und kann nach dem Schließen der Developer Tools 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 jedoch in der Regel auch von der Gruppenrichtlinie gesteuert. Daher ist die Wahrscheinlichkeit gering, dass dies funktioniert.
Um die Liste der Domänen anzuzeigen, die zur Intranetzone gehören, gehen Sie zu:
Extras -> Internetoptionen -> Sicherheit -> Sites -> Erweitert
Wenn die Liste Ihre Subdomain enthält und ausgegraut ist, können Sie die Kompatibilitätsansicht erst dann überschreiben, wenn Ihr Netzwerkadministrator dies zulässt.
Sie müssen sich unbedingt an Ihren Netzwerkadministrator wenden, um die Einstellungen für die Kompatibilitätsansicht in der Gruppenrichtlinie ändern zu können.
Beim Laden der Website mit geöffneten Entwicklertools (F12) wird häufig der Grund angegeben, warum 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 Enterprise Mode das Problem ist (wie es für das Originalposter der Fall zu sein scheint), könnten die folgenden zwei Artikel hilfreich sein:
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 (Template) Seite. Ich verbrachte gerade zwei Stunden damit, zu debuggen und zu optimieren, nur um festzustellen, dass ich diesen Meta-Tag nur auf meinen untergeordneten Seiten hinzugefügt hatte. Sobald ich es zu meiner Layoutseite hinzugefügt habe, wurde der Browser perfekt im Edge-Modus geladen.
Die markierte Antwort ist die richtige. Allerdings, Pricey, sollten Sie dies mit Ihren AD- und Desktop-Admin-Gruppen nachholen. Sie missbrauchen die Standortliste des IE11-Unternehmensmodus. Microsoft beabsichtigt NICHT, es für alle Intranetsites innerhalb einer Organisation zu verwenden. Dies würde die bestehende Einstellung "Alle Intranetseiten im Kompatibilitätsmodus darstellen" verbreiten, die den Fluch des Aufstiegs von Unternehmenswebsites auf der ganzen Welt 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 Enterprise-Modus-Liste aufgeführt ist und deren Rendering-Anforderungen festgelegt sind. Alle anderen Sites in Ihrer Organisation werden dann zur Verwendung von Edge freigegeben. Die Mitarbeiter in Ihrer Organisation, die zunächst alle Intranetsites implementiert haben, haben völlig missverstanden, wie der Enterprise-Modus implementiert werden soll.
Dies ist ein altes Problem mit einigen guten Informationen. Ich habe jedoch gerade herausgefunden, dass der Compat-Modus bei Verwendung eines FQDN in IE 9 - 11 ..__ ausgeschaltet wird. Beispiel. Ich habe das Kameraproblem mit
http: // lrmstst01: 8080/JavaWeb/login.do
aber die Probleme verschwinden mit
http://lrmstst01.mydomain.int:8080/JavaWeb/login.do
Hinweis: Die .int ist Teil unserer internen Domäne
Die Frage ist etwas alt, aber ich habe gerade ein sehr ähnliches Problem gelöst. Wir haben hier mehrere Intranet-Sites, einschließlich derjenigen, für die ich verantwortlich bin, und die anderen erfordern den Kompatibilitätsmodus oder sie gehen kaputt. Aus diesem Grund setzen Site-Regeln IE standardmäßig auf den Kompatibilitätsmodus auf Intranetsites. Ich verbessere meine eigenen Sachen und brauche sie nicht mehr. Einige der Funktionen, die ich verwenden möchte, sehen im Compat-Modus nicht richtig aus. Ich benutze das Meta-IE-Edge-Tag wie Sie.
IE geht davon aus, dass Websites ohne die vollständig qualifizierte Adresse ein Intranet sind, und handeln entsprechend. In diesem Sinne habe ich nur die Bindungen in IIS geändert, um nur die vollständig qualifizierte Adresse zu hören, und dann eine Dummy-Website eingerichtet, die auf die nicht qualifizierte Adresse lauschte. Die zweite leitet den gesamten Datenverkehr an die vollständig qualifizierte Adresse um, wodurch IE der Meinung ist, dass es sich um eine externe Site handelt. Die Site wird korrekt mit oder ohne das Kontrollkästchen Kompatibilitätsmodus für Intranetsites dargestellt.
Ich habe dieses Problem gelöst, indem ich den Benutzer an den vollqualifizierten Domänennamen des Servers weiterleitete, der das Intranet hostet.
Der IE verwendet wahrscheinlich den weltweit schlechtesten Algorithmus zum Erkennen von "Intranet" -Seiten ... In der Tat löst die Angabe server.domain.tld das Problem für mich.
Ja, Sie haben das richtig gelesen. IE erkennt Intranetsites nicht anhand der privaten IP-Adresse, wie es jeder Entwickler, der von TCP/IP gehört hat, oder nicht durch den "Host" -Teil der URL, wenn er nein hat Domain-Teil, muss intern sein.
Unheimlich zu wissen, dass die IE -Devs die grundlegendsten TCP/IP-Konzepte nicht verstehen.
Beachten Sie, dass dies bei einem GROSSEN Unternehmenskunden der Fall war. Wenn Sie sie dazu bringen, GPO für Sie zu ändern, versuchen Sie, die Alpen um 4 Meter in östliche Richtung zu bewegen.
Für das, was es wert ist, hatte ich das Problem auch in IE11:
<!DOCTYPE html>
Und IE=Edge
<head>
Nach einer Weile fand ich heraus, dass:
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 Überprüfung auf der Client-Seite durchgeführt.
Außerdem wird das Überprüfen des Benutzeragenten nicht mehr empfohlen. Siehe https://developer.mozilla.org/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent (aber es könnte einen guten Fall geben)
Fügen Sie die folgende Eigenschaft in die Datei web.config für IIS - Sites ein. Dies hat für mich in meinem Intranet in IE11 funktioniert.
<system.webServer>
<httpProtocol>
<customHeaders>
<clear />
<add name="X-UA-Compatible" value="IE=Edge" />
</customHeaders>
</httpProtocol>
</system.webServer>
Verschieben Sie es in die Zone der vertrauenswürdigen Sites, indem Sie es entweder einer Liste vertrauenswürdiger Sites oder einer lokalen Einstellung hinzufügen. Dadurch wird es aus der Intranetzone entfernt und in Compat nicht gerendert. Aussicht.