2012-12-13 9 views
5

Ich arbeite in einem großen Projekt, und wir müssen feststellen, ob der Benutzer die Kompatibilitätsansicht in IE verwendet.
Ich verwende diesen Code, um das zu tun.IE9 Kompatibilitätsmodus für Intranetsites hat die falsche User-Agent-Zeichenfolge

var agentStr = navigator.userAgent; 
var mode = null; 
if (agentStr.indexOf("Trident/5.0") > -1) { 
    if (agentStr.indexOf("MSIE 7.0") > -1) 
     mode = "IE9CV"; 
    else 
     mode = "IE9"; 
} else if (agentStr.indexOf("Trident/4.0") > -1) { 
    if (agentStr.indexOf("MSIE 7.0") > -1) 
     mode = "IE8CV"; 
    else 
     mode = "IE8"; 
} else 
    mode = "IE7"; 

Es ist großartig funktioniert, ist das Problem, dass:
1 - in einer Intranet-Umgebung wird die Option "Display Intranet-Sites in der Kompatibilitätsansicht" in dem Browser des Clients überprüft, und es gibt nichts, was ich tun kann, darüber
Compatibility View

2 - Es wäre kein Problem für das Skript sein, die Kompatibilitätsansicht zu erkennen, aber ich weiß nicht, warum, der User-Agent, die ich erhalte diese unten, wenn die Seite geladen wird auf IE 9 ist Kompatibilitätsansicht

Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0) 

Die sehr gleichen, wie es sein würde, wenn die Seite mit geladen IE9

Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0) 

Während ich

empfangen werden sould
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0) 

Für IE9 Kompatibilitätsansicht.
Ich bekomme dieses letzte Ergebnis, wenn ich die IE9-Kompatibilitätsansicht FORCE (wie erwartet), aber wenn es von selbst lädt, bekomme ich nur den gleichen User-Agent wie IE9-Standard würde mir senden. Ich kann also nicht herausfinden, ob der Benutzer die IE9-Standardansicht oder die Kompatibilitätsansicht hat.

Ich weiß nicht, ob ich mich klar gemacht habe, aber es sieht aus wie ein großer IE Bug.
Wie soll ich fortfahren? Hat jemand dieses Problem auch erlebt? Dies simuliert der Bildschirm

die Situationen: Compatibility View

+0

Sehr seltsam ... Sind Sie sicher, dass es tatsächlich in Kompatibilitätsmodus zeigt mit den "Display Intranet-Site" überprüft? Da Sie Recht haben, sollte es angezeigt werden MSIE 7.0; Trident/5.0; 'für IE9 Comp-Modus.Fragen Sie einfach, denn wenn der UAgent das anzeigt, ist es vielleicht gar nicht im Comp-Modus. –

+0

mcpDESIGNS check meine letzte Bearbeitung ... Ich habe ein Bild hinzugefügt, das die Situationen simuliert, und die Antworten, die ich bekomme =/ – rafaces

+0

@Christoph Dies ist kein Duplikat, aber ein anderes Problem an sich. Ich habe in letzter Zeit viel mit der Kompatibilität zu tun gehabt und wusste nicht einmal über dieses Problem. Haben Sie versucht, sich mit Microsoft in Verbindung zu setzen, um zu sehen, ob sie einen Rat in diesem seltsamen Intranet Checkbox-Problem haben? Ich fühle mich wie, wenn die UAString ist richtig, ich weiß nicht, wie sonst Sie wissen könnten, wenn es wirklich in Kompatibilitätsmodus –

Antwort

-1

Kompatibilitätsmodus ein Schmerz in fast überall! :)

Versuchen Sie jedoch, den Browser-Agenten nicht zu erkennen, da er leicht getäuscht werden kann und im Allgemeinen nicht zuverlässig ist, stattdessen versuchen Sie "Feature-Erkennung".

Es gibt einige libaries können Sie diese

EDIT tun: wenn Ihre Anforderung Benutzer zu verhindern, ist die Website mit Kompatibilitätsansicht Zugriff aktiviert Sie verwenden können, die <META> tag/HTTP header., um diesen Modus zu deaktivieren. Sehen Sie hier für weitere Informationen.

http://blogs.msdn.com/b/ie/archive/2008/08/27/introducing-compatibility-view.aspx

http://blogs.msdn.com/b/ie/archive/2008/06/10/introducing-ie-emulateie7.aspx

+0

Ich weiß was du meinst, und das wäre eine perfekte Lösung, ** aber ** es ist ein Von den Analysten wird verlangt, dass ich den Kompatibilitätsmodus ** erkenne und den Zugriff sperre, wenn der Benutzer die Kompatibilitätsansicht aktiviert hat. – rafaces

+0

Überprüfen Sie mein Update über Tag – BuddhiP

+0

Ich verwende bereits das Tag, um den Browser IE9: Das Problem besteht darin, dass die Einstellungen der Kompatibilitätsansicht (im Intranet) das Verhalten des Browser-Modus außer Kraft setzen. – rafaces