6

Für IE7-Benutzer möchte ich ein spezielles "Bitte jetzt aktualisieren" Banner einfügen. Ich dachte, dass ich das hatte, aber ich fand heraus, dass mein Banner bei Leuten auftauchte, die IE8 hatten, aber der Kompatibilitätsmodus war standardmäßig aktiviert.Gibt es in asp.net-mvc eine Möglichkeit, zwischen IE7-Benutzern und IE8-Benutzern zu unterscheiden, die sich im Kompatibilitätsmodus befinden?

Gibt es trotzdem zwischen diesen beiden Situationen zu unterscheiden, so dass ich meine Nachricht von ändern können:

von IE7 zu Bitte aktualisieren Sie Sie IE8 verwenden, aber Sie verwenden Kompatibilitätsmodus, dies bitte ausschalten

Hier

ist der Code, den ich jetzt in meiner Ansicht bin mit:

You are using <b><% = Request.Browser.Browser + ", Version: " + Request.Browser.Version%> 

aber wenn ich testen, in IE8 mit Kompatibilitätsansicht, von u singen Sie den obigen Code oder diesen Code auf der Client-Seite:

<!--[if lte IE 7]> 

es gibt true zurück und zeigt, wie IE7 auf. Wie kann ich die beiden unterscheiden?

+0

Ich habe mit den IE-Leute überprüft und sie haben bestätigt, MrGomez ist richtig - das Trident-Token der UA-Zeichenfolge ist die Möglichkeit, dies zu tun. Siehe meine zusätzlichen Kommentare unter der Antwort von Herrn Gomez. Betrachten Sie retagging, das hat nichts mit MVC zu tun – RickAndMSFT

Antwort

7

According to user-agents.org und some of the discussion linked by other answers, Sie zwischen den drei Fällen unterscheiden kann the user agent string Sie durch Prüfen habe erhalten.

  • Für MSIE 7.0: prüfen MSIE 7.0 und der Mangel an Trident

    Zum Beispiel: Mozilla/4.0 (compatible;MSIE 7.0;Windows NT 5.1; GTB5; User-agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; http://bsalsa.com) ; .NET CLR 2.0.50727)

  • Für MSIE 8.0 in Kompatibilitätsmodus: prüfen MSIE 7.0 und die Präsenz von Trident/4.0

    Zum Beispiel: Mozilla/4.0 (compatible;MSIE 7.0;Windows NT 6.1;Trident/4.0;SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0)

  • Für MSIE 8.0 im Standardmodus: prüfen MSIE 8.0

    Zum Beispiel: Mozilla/4.0 (compatible;MSIE 8.0;Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)

diese Kontrollen durchzuführen, konsultieren the following tutorial, all dieser Unsinn über iPhones und mobile Geräte mit den Browsern ersetzen Sie Ich suche nach. :)

Viel Glück mit Ihrer Anwendung.

+1

Wenn Sie nach 'Trident/4.0' suchen, Sie werden Benutzer fälschlicherweise in IE7-Kompatibilität unter IE9 kennzeichnen, was durch "Trident/5.0" dargestellt wird. – saluce

+0

@saluce Die Frage fragt nach der Partitionierung von IE8 und IE7 speziell. Aber das ist eine nützliche Verbesserung für einen zusätzlichen Fall, der nicht berücksichtigt wurde. Vielen Dank! – MrGomez

+1

Ich überprüft mit den IE-Leuten und sie haben Trident-Token der UA-Zeichenfolge bestätigt, ist der Weg, dies zu tun. Natürlich kann die Site auch einen Dokumentmodus mit X-UA-Compatible angeben, so dass die Compatibility View-Schaltfläche nicht angezeigt wird und wenn der Benutzer bereits die Compatibility View-Schaltfläche für diese Domain gedrückt hat, übertrifft der von der Site spezifische Dokumentmodus CV-Taste. Auf diese Weise wissen Sie, dass der IE8-Benutzer immer den IE8-Modus erhält. – RickAndMSFT

1

diese "<meta http-equiv="X-UA-Compatible" content="IE=8">" in Ihrem Header Putting machen IE8 laden nicht in Kompatibilitätsmodus

+0

Ich glaube, Sie haben etwas in Ihrer Antwort verpasst :) – joshuahealy

+0

Okay, das ist besser ... – joshuahealy

+0

Aber ich denke, es könnte in IE 8 Dokument-Modus für IE 9 geladen werden, so könnte es nur push das Problem eine Version nach oben :-) – TGH

0

Ich glaube TGH richtig ist.

Eine weitere Option ist jQuery integrierte Funktionen nutzen voll die testen: Browsertyp, Browserversion und Browser-Modus:

$.browser.msie 
$.browser.version 
document.documentMode 
+0

Wenn also ein Benutzer IE8 im Kompatibilitätsmodus verwendet, was zeigt .version (7 oder 8)? es scheint auch, dass diese veraltet sind ?? – leora

+0

Okay, es sieht so aus: http://stackoverflow.com/a/1298786/1287593 – theJollySin

+0

Das bedeutet also, dass diese Antwort falsch ist, da sie nicht unterscheiden kann – leora

1

Das Dokument Understanding User-Agent Strings von Microsoft gibt eine ziemlich gründliche Erklärung der User-Agent-Strings, die von verschiedenen IE-Versionen (einschließlich des Kompatibilitätsmodus) gesendet werden. Wenn Sie feststellen, dass ein Benutzeragent MSIE 7.0 anzeigt, suchen Sie in der Benutzeragentenzeichenfolge nach Trident, was darauf hinweist, dass der Browser tatsächlich IE8 + im Kompatibilitätsmodus ist.

Das Dokument enthält einen Abschnitt, der das Trident-Token und seine Funktionsweise erläutert.

Verwandte Themen