2009-07-30 8 views
27

Czy mimo to można sprawdzić, czy przeglądarka IE8 ma włączony widok zgodności?Jak wykryć, czy IE8 działa w widoku zgodności?

I nie wydaje się znaleźć coś na Google, a więc zastanawiam się, czy jest to informacja, która jest dostępna ...

Dlaczego pytasz !? Próbuję wyśledzić błąd w naszej aplikacji. Przechodzę przez logi Elmah i wydaje się, że istnieje pewien trend; ten błąd generalnie jest generowany przez IE8. Próbowałem usunąć wadę w mojej kopii IE8, ale nie mogłem. Chcę zawęzić winnych i pomyślałem, że to może być sposób na zrobienie tego.

+0

Czy możesz wyjaśnić, dlaczego musisz wiedzieć? –

Odpowiedz

0

wierzę, że zawarte są w ciągu User Agent:

„. Nowy tag w ciągu User Agent pozwala na wykrycie klientów przeglądania witryny w Widoku zgodności Znacznik ten jest również obecny w«normalne» Ciąg agenta użytkownika programu Internet Explorer 8. "

"Jeśli użytkownik wybierze Widok zgodności dla swojej witryny, możesz" przywrócić go "do pożądanego trybu układu za pomocą nagłówka/nagłówka HTTP w wersji. Nowa wartość treści:" IE = EmulateIE8 " ", uzupełnia listę obsługiwanych wartości i pomaga w tym konkretnym scenariuszu."

Więcej informacji tutaj: http://blogs.msdn.com/ie/archive/2008/08/27/introducing-compatibility-view.aspx

+0

Zobacz tę odpowiedź http://stackoverflow.com/questions/1208837/how-can-i-detect-if-ie8-is-running-in-compatibility-view/1208951#1208951: IE7 produkuje tego samego agenta użytkownika co IE8 w trybie zgodności, więc program użytkownika nie działa –

-1

Bardzo prosta metoda - naciśnij F12, otworzy się pasek narzędzi programisty. Po menu pojawi się tryb przeglądarki. Co wyraźnie powie, że jest w trybie IE8 lub w trybie zgodnym z IE7.

+3

może nie masz dostępu do urządzenia, na którym jest wyświetlana strona. –

-1
if(preg_match('/(?i)msie/', $_SERVER['HTTP_USER_AGENT'])) { 
if(preg_match('/(?i)Trident\/5/', $_SERVER['HTTP_USER_AGENT'])) { 
    echo "IE9"; 
} 
elseif(preg_match('/(?i)Trident\/4/', $_SERVER['HTTP_USER_AGENT'])) { 
    echo "IE8"; 
} 
elseif(!preg_match('/(?i)Trident\/4/', $_SERVER['HTTP_USER_AGENT']) AND preg_match('/(?i)msie 7/', $_SERVER['HTTP_USER_AGENT'])) { 
    echo "IE7"; 
} 
elseif(preg_match('/(?i)msie [1-6]/', $_SERVER['HTTP_USER_AGENT'])) { 
    echo "IE1 à IE6"; 
}} 
+2

Być może wyjaśnienie? –

+0

jego PHP, używa regex do porównania agenta użytkownika po stronie serwera. –

3

Używam:

try{ JSON } catch (e){ alert("Compatibility Mode Detected") } 

Przedmiotem JSON został zdefiniowany w IE 8, więc w IE 7 lub gdy w Compatibility Mode zostanie zgłoszony błąd i złapać.

Podoba mi się, że to działa za każdym razem i jest to jedna linia.

+0

Czy to w javascript? to nie działa dla mnie :( – Kieranmv95

+0

Tak, to jest JavaScript. Nadal używam tego do dziś, aby wykopać ludzi, którzy używają ie7. –

0

W żądaniu MVC/ASP.Browser.Version zwraca "7.0" niezależnie od wersji, gdy w widoku zgodności w przeciwnym razie zwraca wersję przeglądarki.

Można również użyć Request.Browser.Browser aby sprawdzić, czy to IE

Request.Browser.Version 
Request.Browser.Browser 
2

Aby rozwinąć na odpowiedź @ użycie funkcji wykrywania Tommy'ego (alert jest opcjonalny oczywiście używam piękny div lub inline wiadomość gdzieś):

if(typeof document.documentMode !== 'undefined') { // checks if this is IE 8 or > 
     if(document.documentMode < 8) { // check if in compat mode 
      // add code here to inform user that they need to turn off compatiblity view 
      alert("Click ALT-T then compat view etc..."); 
     } 
} 
Powiązane problemy