Ответ 1
В Javascript используйте document.documentMode
Подробнее см. http://msdn.microsoft.com/en-us/library/cc196988%28VS.85%29.aspx.
Есть ли способ определить, включен ли браузер IE8 в режиме совместимости?
Я не могу найти что-либо в Google, и поэтому мне интересно, есть ли это информация, доступная...
Почему вы спрашиваете!? Я пытаюсь найти ошибку в нашем приложении. Я собираюсь через журналы Эльмы, и, похоже, существует тенденция; эта ошибка обычно вызывается IE8. Я попытался переоткрыть дефект в моей копии IE8, но не смог. Я хочу сузить виновных и подумал, что это может быть способ сделать это.
В Javascript используйте document.documentMode
Подробнее см. http://msdn.microsoft.com/en-us/library/cc196988%28VS.85%29.aspx.
Очевидно, что IE8 имеет некоторые новые свойства
document.documentMode
и
document.compatMode
http://msdn.microsoft.com/en-us/library/cc196988(VS.85).aspx
Проверьте "Trident/4.0" в userAgent. Он должен присутствовать только для IE-8. http://social.msdn.microsoft.com/Forums/en-US/iewebdevelopment/thread/33e0ed49-11fb-4d91-857c-a35496e90075
Я использую:
try{ JSON } catch (e){ alert("Compatibility Mode Detected") }
Объект JSON
был определен в IE 8
, поэтому в IE 7
или когда в Compatibility Mode
ошибка была выбрана и поймана.
Мне нравится, что это работает каждый раз, и это одна строка.
Чтобы расширить ответ на @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...");
}
}
Я верю, что он содержится в строке User Agent:
"Новый тег в строке User Agent позволяет обнаруживать клиентов, просматривающих ваш сайт в представлении совместимости. Этот тег также присутствует в" обычной "строке User Agent 8."
"В случае, если пользователь выбирает представление совместимости для вашего сайта, вы можете" вернуть их "в желаемый режим макета с использованием тега таргетинга версии/заголовка HTTP. Новое значение контента" IE = EmulateIE8, округляет список поддерживаемых значений и помогает в этом конкретном сценарии. "
Дополнительная информация здесь: http://blogs.msdn.com/ie/archive/2008/08/27/introducing-compatibility-view.aspx
В MVC/ASP Request.Browser.Version возвращается "7.0" независимо от версии, когда в представлении совместимости в противном случае возвращается версия браузера.
Вы также можете использовать Request.Browser.Browser, чтобы проверить, что он IE
Request.Browser.Version
Request.Browser.Browser
Очень простой метод - нажмите F12, он откроет панель инструментов разработчика. После меню вы увидите режим браузера. Очевидно, что он работает в режиме IE8 или в режиме IE7.
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";
}}