Ich arbeite seit über 6 Monaten an einer Intranet-Website, wo ich das folgende doctype
Meta-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 EDGE
Einstellung hat in Internet Explorer 9 funktioniert.
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 edge
diese 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.
Antworten:
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:
HTML1122: Internet Explorer is running in Enterprise Mode emulating IE8.
quelle
Dieses Problem wird im Allgemeinen dadurch verursacht, dass die Website- / Intranet-URL in einem der folgenden Bereiche abgelegt wird:
(mit aktivierter Einstellung " Intranetseiten in Kompatibilitätsansicht anzeigen" )
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.
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:
quelle
Stellen Sie für diejenigen, die ein ASP.NET MVC-Projekt erstellen, sicher, dass Sie Folgendes hinzufügen:
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.
quelle
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.
quelle
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
quelle
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.
quelle
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.
quelle
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.
quelle
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.
quelle
Für das, was es wert ist, hatte ich das Problem auch in IE11:
<!DOCTYPE html>
undIE=Edge
Einstellungen in der Frage erwähnt<head>
ElementNach 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)
aberJavaScript :
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)
quelle