Как я могу определить, работает ли IE8 в режиме совместимости? - PullRequest
27 голосов
/ 30 июля 2009

Есть ли способ определить, включен ли в браузере IE8 режим совместимости?

Мне кажется, что я ничего не могу найти в Google, и поэтому мне интересно, доступна ли эта информация ...

Почему ты спрашиваешь !? Я пытаюсь отследить ошибку в нашем приложении. Я просматриваю бревна Эльмы, и, кажется, есть тенденция; эта ошибка обычно выдается IE8. Я попытался исправить дефект в моей копии IE8, но не смог. Я хочу сузить преступников, и подумал, что это может быть способ сделать это.

Ответы [ 9 ]

18 голосов
/ 30 июля 2009

В Javascript используйте document.documentMode

Подробнее см. http://msdn.microsoft.com/en-us/library/cc196988%28VS.85%29.aspx.

7 голосов
/ 30 июля 2009

Очевидно, что IE8 имеет некоторые новые свойства

document.documentMode

и

document.compatMode

http://msdn.microsoft.com/en-us/library/cc196988(VS.85).aspx

3 голосов
/ 22 сентября 2012

Я использую:

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

Объект JSON был определен в IE 8, поэтому в IE 7 или в Compatibility Mode выдается ошибка и фиксируется.

Мне нравится, что это работает каждый раз, и это одна строка.

3 голосов
/ 16 августа 2010

Проверьте наличие «Trident / 4.0» в userAgent Он должен присутствовать только для IE-8. http://social.msdn.microsoft.com/Forums/en-US/iewebdevelopment/thread/33e0ed49-11fb-4d91-857c-a35496e90075

2 голосов
/ 18 сентября 2013

Чтобы расширить ответ @ Tommy, используйте функцию обнаружения (оповещение, конечно, не обязательно, я использую хороший div или встроенное сообщение где-то):

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...");  
         }
} 
0 голосов
/ 08 марта 2013

В MVC / ASP Request.Browser.Version возвращает «7.0» независимо от версии в режиме совместимости, в противном случае возвращается версия браузера.

Вы также можете использовать Request.Browser.Browser, чтобы проверить, что это IE

Request.Browser.Version
Request.Browser.Browser
0 голосов
/ 23 октября 2011
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";
}}
0 голосов
/ 25 марта 2011

Очень простой метод - нажмите F12, откроется панель инструментов разработчика. После меню вы увидите режим браузера. Который четко скажет, что он находится в режиме IE8 или IE7-совместимом режиме.

0 голосов
/ 30 июля 2009

Я полагаю, что он содержится в строке User Agent:

«Новый тег в строке User Agent позволяет обнаруживать клиентов, просматривающих ваш сайт в представлении совместимости. Этот тег также присутствует в« обычной »строке Internet Agent 8 User Agent."

"В случае, если пользователь выбирает представление совместимости для вашего сайта, вы можете« вернуть их »в нужный режим макета с помощью тега таргетинга на версию / заголовка HTTP. Новое значение контента, IE = EmulateIE8 , округляет список поддерживаемых значений и помогает в этом конкретном сценарии. "

Больше информации здесь: http://blogs.msdn.com/ie/archive/2008/08/27/introducing-compatibility-view.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...