Überschreiben Sie den Intranet-Kompatibilitätsmodus IE8

200

Standardmäßig zwingt IE8 Intranet-Websites in den Kompatibilitätsmodus. Ich habe versucht, den Meta-Header in IE8 zu ändern, aber er erkennt den Meta-Header nicht und verwendet nur die Browsereinstellung. Weiß jemand, wie man das deaktiviert?

Sanpall
quelle
1
Versuchen Sie stackoverflow.com/questions/2742853/… , was bei mir funktioniert hat.
David Kolar
2
Fügen Sie dies in das Kopf-Tag Ihrer Seite ein: <meta http-equiv = "X-UA-kompatibel" content = "IE = 8" /> (für die gewünschte IE-Version). Beachten Sie, dass dies NICHT die Tatsache ändert, dass der Browser angibt, dass er sich im Kompatibilitätsmodus befindet (als Browsermodus bezeichnet), die Seite jedoch im IE8-Standardmodus gerendert wird. Sie müssen dann Javascript ändern, um nach "Dreizack" zu suchen, wenn Sie nach IE8 oder höher suchen. Siehe: blogs.msdn.com/b/mikeormond/archive/2008/09/25/…
n00b
@ n00b - Dies hat keine Auswirkungen auf meine Website.
Pete
Mein Verständnis ist das Meta-Tag muss mir unmittelbar nach dem Head-Tag. Ich habe festgestellt, dass einige Skripte bei Index 0 in head eingefügt werden. Daher befindet sich das Meta-Tag nicht mehr hinter head.
AMissico

Antworten:

224

Es ist möglich, den Kompatibilitätsmodus im Intranet zu überschreiben.

Fügen Sie für IIS einfach den folgenden Code zur web.config hinzu. Arbeitete für mich mit IE9.

<system.webServer>
  <httpProtocol>
    <customHeaders>
      <clear />
      <add name="X-UA-Compatible" value="IE=edge" />
    </customHeaders>
  </httpProtocol>
</system.webServer> 

Äquivalent für Apache:

Header set X-UA-Compatible: IE=Edge

Und für Nginx:

add_header "X-UA-Compatible" "IE=Edge";

Und für express.js:

res.set('X-UA-Compatible', 'IE=Edge')
Andras Csehi
quelle
20
Dies ist die richtige Antwort. Das Meta-Tag hat nichts zu tun, aber das Hinzufügen des Antwortheaders funktioniert. Weitere Infos hier: social.msdn.microsoft.com/Forums/is/iewebdevelopment/thread/…
russau
3
Zustimmen. Dies sollte die richtige Antwort sein, da nur die Intranet-Einstellungen für diese Website korrekt überschrieben werden.
Enriquein
9
(zur Verdeutlichung: Es funktioniert für den Dokumentmodus, aber nicht für den
Browsermodus
21
Dies ist nicht die richtige Antwort. Diese Antwort ändert den Dokumentmodus. Sie ändert NICHT den wichtigen "Browsermodus". Ich bin immer noch auf der Suche nach einer Lösung für dieses Problem.
DeveloperChris
4
Dies ist nicht die richtige Antwort, da sie .net-spezifisch ist (ohne die Tatsache überhaupt anzuerkennen).
Daddy32
84

Michael Irigoyen ist richtig, aber es ist etwas komplizierter ...

Wenn Sie das wunderbare Boilerplate von Paul Irish verwenden, haben Sie ungefähr Folgendes: -

<!doctype html>
<!--[if lt IE 7]> <html class="no-js ie6 oldie" lang="en"> <![endif]-->
<!--[if IE 7]>    <html class="no-js ie7 oldie" lang="en"> <![endif]-->
<!--[if IE 8]>    <html class="no-js ie8 oldie" lang="en"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

Dies funktioniert NICHT wie erwartet und erzwingt im IE den Kompatibilitätsmodus in einer Intranetumgebung, wenn Sie die Option "Intranetsites in Kompatibilitätsansicht anzeigen" aktiviert haben. Sie müssen die bedingten IE-Kommentare entfernen, um den Intranet-Kompatibilitätsmodus zu verhindern.

Der folgende Code funktioniert also:

<!doctype html>
<html class="no-js" lang="en">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

Wenn Sie vor der <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">Anweisung bedingte IE-Kommentare auslösen, werden Sie in einer Intranet- Umgebung in den Kompatibilitätsmodus versetzt, wenn Sie IE9 mit den Standardeinstellungen ausführen.

UPDATE - ZUSÄTZLICHE INFORMATIONEN: Beachten Sie jedoch, dass es einen Trick gibt, mit dem die HTML5-Kochplatte funktioniert:

Fügen Sie vor dem DOCTYPE einen leeren, bedingten Kommentar hinzu. Beachten Sie auch, dass Sie in diesem Fall auch bedingte Kommentare um die X-UA-CompatibleDirektive hinzufügen können , sodass die Seite auch HTML5-gültig ist. Also zum Beispiel:

<!--[if HTML5]><![endif]-->
<!doctype html>
<!--[if the boilerplate conditionals goes here<![endif]-->
<head>
<!--[if !HTML5]>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<![endif]-->

Ein Blog-Beitrag, der vom ersten Teil dieser Antwort inspiriert wurde , enthält weitere Details. Und übrigens: Wie in diesem Blog - Eintrag erwähnt, kann man auch den bedingten Kommentar vor dem DOCTYPE mit einem ersetzen halb bedingten Kommentar mit keiner Bedingung : <!--[]-->. Also wie so:

<!--[]-->
<!doctype html>
<!--[if the boilerplate conditionals goes here<![endif]-->
<head>
<!--[if !HTML5]>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<![endif]-->

Beachten Sie jedoch, dass die letztere Variante ( <--[]--><!DOCTYPE html>), wie z. B. durch diese Antwort auf eine andere Frage erläutert , das bekannte Problem aktiviert, in das sie - für ältere IE-Versionen ohne Unterstützung für X-UA-Compatioble(lesen Sie: für IE7 und IE6) - den Browser einbindet Macken-Modus.

Andrew
quelle
Dies hat das Problem für mich nicht gelöst. Zu Ihrer Information: Das Hinzufügen des "X-UA-kompatiblen" als Header hat das Problem behoben!
Scott Rippey
34

Wenn Sie das Menü "Extras" aufrufen und "Einstellungen für die Kompatibilitätsansicht" auswählen, wird in diesem Dialogfeld unten die Einstellung "Intranetsites im Kompatibilitätsmodus anzeigen" angezeigt. Wenn Sie dies deaktivieren, sollte das Problem behoben sein, und der IE verwendet den auf DOCTYPE basierenden Modus.

PilotBob
quelle
19
Ich habe nicht abgelehnt, aber ich würde vermuten, dass Sie aus der Sicht des Benutzers geantwortet haben (was ein Benutzer tun sollte). Diese Frage stammt von einem Webentwickler und fragt, wie das Problem behoben werden kann, ohne dass der Benutzer etwas Besonderes tun muss.
Roy Tinker
1
Darüber hinaus ist die Kompatibilität mit alten Anwendungen nicht möglich. Wenn Sie diese Einstellung deaktivieren, werden Ihre alten Apps möglicherweise nicht mehr aktualisiert. Ich denke, der Fragesteller sucht nach einer Möglichkeit, den Standardmodus zu erzwingen, wenn bei allen anderen Apps in seinem Intranet das Kontrollkästchen für den Kompatibilitätsmodus aktiviert sein muss.
Andrew Lewis
2
Ich glaube, er hat es aus Sicht eines Programmierers beantwortet. "... IE verwendet die Modusbasis auf dem DOCTYPE". Siehe: msdn.microsoft.com/en-us/library/ms535242%28VS.85%29.aspx Wenn das Unternehmen Active Directory ausführt , können Änderungen an den Browsereinstellungen vom Administrator weitergegeben werden. Mit FireFox geht das nicht!
Nate Zaugg
@ AndrewLewis vielleicht. In der URL-Leiste befindet sich jedoch die Schaltfläche für den Kompatibilitätsmodus, mit der der Browser den Kompatibilitätsmodus für diese bestimmte Site verwendet. Oder Sie können sie manuell im Dialogfeld hinzufügen. Wiederum kann dieses Zeug global von der IT erledigt werden.
PilotBob
2
@PilotBob Wenn Sie mehr als 120.000 Benutzer und Hunderte (wenn nicht Tausende) Intranetsites unterstützen möchten, ist dies keine praktikable Lösung.
yorch
19

Die Antworten auf diese Frage sind etwas verwirrend.

Die beste Antwort ist derzeit eine serverseitige Lösung, die ein Flag im http-Header setzt. Einige Kommentare weisen darauf hin, dass eine Lösung mit einem Meta-Tag einfach nicht funktioniert.

Ich denke, dieser Blogeintrag gibt einen schönen Überblick über die Verwendung von Kompatibilitäts-Metainformationen und funktioniert meiner Erfahrung nach wie folgt: http://blogs.msdn.com/b/cjacks/archive/2012/02/29/using-x- ua-kompatibel-um-dauerhafte-Unternehmens-Webanwendungen zu erstellen.aspx

Die Haupt-Punkte:

  • Das Festlegen der Informationen mithilfe eines Meta-Tags und in der Kopfzeile funktioniert
  • Das Meta-Tag hat Vorrang vor dem Header
  • Das Meta-Tag muss das erste Tag sein, um sicherzustellen, dass der Browser die Rendering-Engine nicht anhand von Heuristiken ermittelt

Ein wichtiger Punkt (und ich denke, von diesem Punkt kommt viel Verwirrung) ist, dass der IE zwei "Klassen" von Modi hat:

  1. Der Dokumentmodus
  2. Der Browsermodus

Der Dokumentmodus bestimmt die Rendering-Engine (wie wird die Webseite gerendert).

Der Browsermodus bestimmt, welche User-Agent-Zeichenfolge (UA) der IE an Server sendet, welchen IE-Modus der Dokumentmodus standardmäßig verwendet und wie der IE bedingte Kommentare auswertet.

Weitere Informationen zum Dokumentmodus im Vergleich zum Browsermodus finden Sie in diesem Artikel: http://blogs.msdn.com/b/ie/archive/2010/06/16/ie-s-compatibility-features-for- site-developer.aspx? Redirected = true

Nach meiner Erfahrung beeinflussen die Kompatibilitäts-Metadaten nur den Dokumentmodus . Wenn Sie sich also auf die Browsererkennung verlassen, hilft Ihnen dies nicht weiter. Wenn Sie jedoch die Funktionserkennung verwenden, sollte dies der richtige Weg sein.

Daher würde ich empfehlen, das Meta-Tag (auf der HTML-Seite) mit dieser Syntax zu verwenden:

<meta http-equiv="X-UA-Compatible" content="IE=9,10" ></meta>

Hinweis: Geben Sie eine Liste der Browsermodi an, auf die Sie getestet haben.

Der Blog-Beitrag rät auch von der Verwendung von EmulateIEX ab. Hier ein Zitat:

Abgesehen davon finde ich es seltsam, wenn eine Anwendung EmulateIE7 oder EmulateIE8 anfordert. Diese Emulationsmodi sind selbst Entscheidungen. Anstatt genau zu sagen, was Sie wollen, fragen Sie nach einem von zwei Dingen und bestimmen dann, welches dieser beiden Dinge, indem Sie an anderer Stelle im Code nach einem DOCTYPE suchen (und dann versuchen zu verstehen, ob dieser DOCTYPE Ihnen Standards gibt oder Macken je nach Inhalt - eine andere manchmal verwirrende Aufgabe). Anstatt dies zu tun, halte ich es für wesentlich sinnvoller, direkt anzugeben, was Sie möchten, als eine Antwort zu geben, die selbst eine Frage ist. Wenn Sie IE7-Standards wünschen, verwenden Sie IE = 7 anstelle von IE = EmulateIE7. (Beachten Sie, dass dies nicht bedeutet, dass Sie keinen DOCTYPE verwenden sollten - Sie sollten.)

stefan.s
quelle
Wie ändere ich den Browsermodus?
Vishnudev K
Der Satz im Browsermodus ist verwirrend
Justice Fist
@JusticeFist Ja, du hast recht, danke. Ich habe versucht, es zu verbessern.
stefan.s
1
@VishnudevK Der einzige Weg, den ich kenne, ist die Verwendung der Entwicklertools. Aber Sie möchten wahrscheinlich eine programmatische Lösung.
stefan.s
9

Versuchen Sie dieses Metatag:

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

Es sollte IE8 zwingen, als IE8-Standardmodus zu rendern, auch wenn "Intranetsites in Kompatibilitätsansicht anzeigen" aktiviert ist [entweder für Intranet oder alle Websites]. Ich habe es selbst in IE 8.0.6 versucht

Ala 'Alnajjar
quelle
15
Nein, tut es nicht.
Dennis C
11
Dies ist tatsächlich korrekt, MUSS jedoch vor allen META-Tags auf der Seite angezeigt werden, da es sonst nicht funktioniert.
Michael Irigoyen
2
Das funktioniert bei mir nicht. Soweit ich das beurteilen kann, ist IE8s "Intranetsites im Kompatibilitätsmodus anzeigen" nicht überschreibbar
codeulike
6
(Zur Verdeutlichung: Es funktioniert für den Dokumentmodus, aber nicht für den
Browsermodus
7

Unser Systemadministrator hat dieses Problem behoben, indem er das Kontrollkästchen für unser Unternehmen global deaktiviert hat. Benutzer mussten sich nicht einmal abmelden.

Geben Sie hier die Bildbeschreibung ein

James Lawruk
quelle
1
Diese Lösung funktioniert einwandfrei, wenn alle Websites im Intranet die neuesten Webstandards verwenden können. Wenn einige dies jedoch nicht können, wird diese Methode diese versehentlich zerstören ... Ich würde mit Vorsicht vorgehen.
ʙᴀᴋᴇʀ ʙᴀᴋᴇʀ
4

Ich habe eine funktionierende Antwort gefunden, mit der die aktivierte Intranet-Kompatibilitätsansicht überschrieben werden kann. Fügen Sie einfach im OnInit-Ereignis Ihrer Seite diese Zeile hinzu (kein meta oder web.config customHeader erforderlich):

Response.AddHeader("X-UA-Compatible", "IE=EmulateIE8");
Cyrille Perrot
quelle
1
Entwicklungsplattformspezifische Antwort ... ohne die Plattform zu spezifizieren. Ich vermute, Sie sprechen über Visual Studio .NET? Soweit ich das beurteilen kann, existiert das OnInit-Ereignis nicht (in Javascript, Java, PHP, ...)
Stijn de Witt
3

Versuchen Sie, Folgendes in die Kopfzeile einzufügen:

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

Mit freundlicher Genehmigung des HTML5 Boilerplate von Paul Irish (funktioniert aber auch in XHTML Transitional).

Gabe
quelle
3

Ich konnte den Kompatibilitätsmodus überschreiben, indem ich das Meta-Tag im Kopfbereich als DAS ERSTE TAG angab , nicht nur als erstes Meta-Tag, sondern nur als SEHR ERSTES TAG .

Vielen Dank an @ stefan.s, dass Sie mich in Ihrer ausgezeichneten Antwort darauf aufmerksam gemacht haben. Vor dem Lesen hatte ich:

Das hat nicht funktioniert

<head> 
<link rel="stylesheet" type="text/css" href="https://stackoverflow.com/qmuat/plugins/editors/jckeditor/typography/typography.php"/>
<meta http-equiv="x-ua-compatible" content="IE=9" >

hat das Link-Tag aus dem Weg geräumt und es hat funktioniert

DAS FUNKTIONIERT :

<head><meta http-equiv="x-ua-compatible" content="IE=9" >

Ein IE8-Client, der auf Kompatibilität eingestellt ist, rendert die Seite als IE8-Standardmodus. Der Inhalt = 'IE = 9' bedeutet, dass der höchste verfügbare Standard bis einschließlich IE9 verwendet wird.

PeteS_UK
quelle
2

Dies ist nicht gerade eine Lösung, aber ich denke, es ist die beste. Auf unseren Intranetseiten teilen wir den Leuten mit, dass nur Firefox darauf zugreifen kann. Wir nehmen die IE-Benutzer hier nicht freundlich auf. Überprüfen Sie den Benutzeragenten auf der Server- oder Clientseite und verweigern Sie ihm den Zugriff vom IE. Und ich bin ein .NET-Programmierer.

Caimen
quelle
1
Ich mag deine Idee. aber wir haben hier kein Firefox.
Dennis C
22
Am schlimmsten. Vorschlag. Je. Das ist so schlimm wie alle Intranetseiten, die nur für den Internet Explorer bestimmt sind. Versuchen Sie, ein wenig zusätzliche Arbeit zu leisten, und bringen Sie Ihre Inhalte in allen gängigen Browsern zum Laufen. Es ist nicht so schwer.
Mhenry1384
2
@ mhenry1384 Möchtest du erklären, warum es ein schrecklicher Vorschlag ist, ein gesperrtes Intranetsystem zu haben? Sie müssen keine Quarks für alte Browser unterstützen. Sie wissen, dass Ihre Benutzer die beabsichtigte Erfahrung erhalten. Es ist kein öffentliches System, wen interessiert das? Unterstützen Sie immer noch IE 5.5? Ich fordere meine öffentlichen Benutzer auf, zu aktualisieren. Ich sollte sowieso nicht meine Zeit mit Backend-Systemen verschwenden, es ist die Öffentlichkeit, die mich braucht. Es ist nicht so, dass ich es auf IE 6 sperre und ActiveX wie einige benötige. Zum Beispiel erlaubt mein System Firefox 6 und höher. Wenn also Firefox 27 herauskommt, funktioniert es immer noch. Entweder stimmen Sie mich ab oder machen Sie ein tatsächliches Argument.
Caimen
2
Jede von mir verwendete Intranetsite, die für einen bestimmten Browser gesperrt war, ist für den Internet Explorer gesperrt. Das macht mich verrückt, da ich IE genauso hasse wie den nächsten. Das Erzwingen, dass Ihre Benutzer den Browser Ihrer Wahl (nicht ihren) verwenden, auch wenn es sich um etwas handelt, ABER IE, scheint dem Web, sogar dem Intranet-Web, zu widersprechen. Es ist normalerweise nicht so schwierig, eine Website in IE7 / 8/9 zum Laufen zu bringen, insbesondere wenn Sie Bibliotheken wie jQuery verwenden. Lassen Sie die Benutzer verwenden, was sie wollen.
Mhenry1384
2
Eine für Firefox 10 geschriebene Site funktioniert meiner Erfahrung nach unter IE9 fast immer einwandfrei, ohne Änderungen vorzunehmen. Wenn Sie Benutzer daran hindern, IE9 zu verwenden, ist noch etwas anderes los. Es zeigt an, dass Sie sich auf einer idealogischen Mission befinden und nicht jemand, der versucht, gute Web-Software zu schreiben. Wenn es nur darum ging, keine Zeit zu haben, andere Browser als Firefox zu testen, schränken Sie dann auch die Verwendung von Opera ein? [Tut mir leid, dass ich so wortreich bin. Ich sollte zurückgehen, um dieses verdammte IE8-Problem zu beheben, das ich habe ... :-)]
mhenry1384
1

Ich hatte mit diesem Problem zu kämpfen und wollte helfen, eine einzigartige Lösung und Einsicht zu bieten.

Bestimmte AJAX-basierte Frameworks fügen zu Beginn des Programms Javascripts und Stylesheets ein. <head>Dies scheint zu verhindern, dass die etablierte Meta-Tag-Lösung ordnungsgemäß funktioniert. In diesem Fall stellte ich fest, dass das Problem direkt durch Einfügen in den HTTP-Antwortheader behoben werden kann, ähnlich wie bei Andras Csehis Antwort.

Für diejenigen von uns, die Java-Servlets verwenden, ist die Verwendung eines ServletFilter eine gute Möglichkeit, dies zu lösen.

public class EmulateFilter implements Filter {

@Override
public void destroy() {
}

@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1,
        FilterChain arg2) throws IOException, ServletException {
    HttpServletResponse response = ((HttpServletResponse)arg1);
    response.addHeader("X-UA-Compatible", "IE=8");
    arg2.doFilter(arg0, arg1);
}

@Override
public void init(FilterConfig arg0) throws ServletException {
}

}
maple_shaft
quelle
1

Wir können dieses Problem in der Spring-Apache-Tomcat-Umgebung beheben, indem wir eine einzelne Zeile in der RequestInterceptor-Methode hinzufügen.

//before the actual handler will be executed
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler)
throws Exception {

// Some logic

// below statement ensures IE trusts the page formatting and will render it acc. to IE 8 standard.
response.addHeader("X-UA-Compatible", "IE=8"); 

return true;
}

Referenz von - So erstellen Sie einen Filter und ändern den Antwortheader Hier erfahren Sie, wie Sie dieses Problem über einen RequestInterceptor (Spring) beheben können.

Jack Sparrow
quelle
0

Wenn Sie möchten, dass Ihre Website den IE 8-Standardmodus erzwingt, verwenden Sie dieses Metatag zusammen mit einem gültigen DOCTYPE:

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

Beachten Sie den Wert "EmulateIE8" und nicht den einfachen Wert "IE8".

Laut IE-Entwicklern sollte dies "Standard-DOCTYPEs im IE8-Standardmodus anzeigen; Quirks anzeigen DOCTYPEs im Quirks-Modus anzeigen. Verwenden Sie dieses Tag, um die Kompatibilitätsansicht auf Client-Computern zu überschreiben und Standards für IE8-Standards zu erzwingen."

Weitere Informationen zu diesem IE-Blogbeitrag: http://blogs.msdn.com/b/ie/archive/2008/08/27/introducing-compatibility-view.aspx

Ashtonium
quelle
0

Diese Frage ist ein Duplikat des Force "Internet Explorer 8" -Browsermodus im Intranet .

Die Antworten dort zeigen an, dass es nicht möglich ist, die Kompatibilitätsansicht (auf der Serverseite) zu deaktivieren - https://stackoverflow.com/a/4130343/24267 . Dies scheint sicherlich der Fall zu sein, da keiner der Vorschläge, die ich versucht habe, funktioniert hat. In IE8 wird der "Browsermodus" auf die Kompatibilitätsansicht von Internet Explorer 8 eingestellt, unabhängig davon, welche Art von X-UA-kompatiblem Header Sie senden.

Ich musste eine spezielle Behandlung für IE7 und den Kompatibilitätsmodus durchführen, die dazu führte, dass der Browser mit IE8 renderte, aber meldete, dass es sich um IE7 handelte, und meinen Code beschädigte. So habe ich meinen Code repariert (mir ist bewusst, dass dies ein schrecklicher Hack ist und ich sollte auf Funktionen testen, die keine Browserversionen sind):

isIE8 = navigator.appVersion.indexOf ("MSIE")! = -1 && parseFloat (navigator.appVersion.split ("MSIE") [1]) == 8;
if (! isIE8 && navigator.appVersion.indexOf ("MSIE")! = -1 && parseFloat (navigator.appVersion.split ("MSIE") [1]) == 7 && navigator.appVersion.indexOf ("Trident") ! = -1) {
    // Lügner, das ist IE8 im Kompatibilitätsmodus.
    isIE8 = wahr;
}}
mhenry1384
quelle
0

Hatte das gleiche Problem. Es funktionierte mit

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9" />
Sandro
quelle
0

Fügen Sie dies in das Head-Tag Ihrer Seite ein (für die gewünschte IE-Version):

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

Beachten Sie, dass dies NICHT die Tatsache ändert, dass der Browser angibt, dass er sich im Kompatibilitätsmodus befindet (als Browsermodus bezeichnet), die Seite jedoch im IE8-Standardmodus gerendert wird. Wenn es NOCH nicht so wiedergibt, wie Sie es wünschen, liegt es wahrscheinlich daran, dass Sie über Javascript verfügen, das die IE-Version fälschlicherweise überprüft. Siehe die folgende Blog - Post , um zu bestimmen , welche Eigenschaft sollten Sie Keying ausgeschaltet werden , weil selbst wenn Sie den Meta - X-UA-Compatible - Tag gesetzt ist , wird der User - Agent - String noch sagen MSIE 7.0 .

In meinem Fall musste ich für das Update eine Überprüfung für den IE7-Kompatibilitätsmodus hinzufügen. Ich habe dazu einen einfachen Javascript-Code verwendet:

                //IE8 and later will have the word 'trident' in its user agent string.
                if (navigator.userAgent.indexOf("Trident")>-1) { //do something }
n00b
quelle
0

Für alle anderen, die dies lesen und dies über das Gruppenrichtlinienobjekt für alle Benutzer deaktivieren möchten, ist dies die Einstellung:

Computerkonfiguration / Administrative Vorlagen / Windows-Komponenten / Internet Explorer / Kompatibilitätsansicht / Aktivieren des Internet Explorer-Standardmodus für lokales Intranet

obwohl die web.config edit es für mich behoben hat.

Schrodo_Baggins
quelle
Um zum lokalen Gruppenrichtlinien-Editor zu gelangen , können Sie gpedit.msc über Ausführen ausführen .
ROMANIA_engineer
0

Ändern Sie die Header in .htaccess

BrowserMatch MSIE ie
Header set X-UA-Compatible "IE=Edge,chrome=1" env=ie

Die Lösung für dieses Problem finden Sie hier: https://github.com/h5bp/html5-boilerplate/issues/378

user1858301
quelle
Nicht jeder benutzt Apache
Burjua
0

Der Kommentar von Stefan S zum Dokumentmodus im Vergleich zum Browsermodus war für mein Problem sehr relevant.

Ich habe die X-UA-Content-Metadaten auf der Seite, aber ich habe die Browserversion clientseitig über getestet navigator.appVersion. Dieser Test spiegelt nicht die Metadaten wider, da der Browsermodus nicht der Dokumentmodus ist.

Die Antwort für mich war, Folgendes zu testen document.documentMode:

function IsIE(n)
{
    if (navigator.appVersion.indexOf("MSIE ") == -1) return false;
    var sDocMode = document.documentMode;
    return (isFinite(sDocMode) && sDocMode==n);
}

Jetzt spiegelt sich mein Meta-X-UA-Content-Tag in meinem Browsertest wider.

Warum mache ich so etwas verpöntes wie den Browser zu testen? Geschwindigkeit. Verschiedene meiner jQuery-Add-Ins, wie z. B. Tablesorter, sind in IE6 / 7 einfach zu langsam, und ich möchte sie deaktivieren. Ich bin nicht sicher, ob das Testen auf Browserfunktionen mir helfen kann, dieses Problem zu lösen.

Herc
quelle