Почему IE 8 navigator.UserAgent возвращает MSIE 7.0?

#javascript #html #internet-explorer-8 #user-agent #navigator

#javascript #HTML #internet-explorer-8 #пользовательский агент #навигатор

Вопрос:

Я пытаюсь реализовать функцию поддержки браузера на своей веб-странице. Для Firefox 3.6 он работает нормально, но по какой-то причине пользовательский агент IE 8 возвращает неверное значение.

Вот сценарий, когда я запускаю «локальный» код javascript в IE8, navigator.UserAgent возвращает правильную информацию (MSIE 8.0). Но когда я запускаю этот скрипт на сервере, он возвращает MSIE 7.0 в браузере IE 8.

Есть идеи?

Комментарии:

1. если вы прослушиваете пользовательские агенты, вы делаете это неправильно, и у вас возникнет куча подобных проблем. вы должны использовать обнаружение функций, но вы также можете просто настроить условные комментарии для ie7 и ie8 и изменить некоторые css, чтобы увидеть, что происходит.

2. Использование обнаружения функций в отличие от поиска в браузере было бы более надежным, существует множество библиотек, попробуйте этот поиск в Google

3. Сервер находится в вашей локальной сети или в Интернете? IE8 по умолчанию выдает себя за IE7 при просмотре сайтов интрасети .

Ответ №1:

Вам также нужно проверить токен Trident.

Токен Trident

Когда инструменты разработчика F12 используются для изменения режима браузера Internet Explorer, маркер версии строки user-agent изменяется, чтобы браузер отображался как более ранняя версия. Это делается для того, чтобы разрешить просмотр содержимого, специфичного для браузера, в Internet Explorer и обычно необходимо только тогда, когда веб-сайты не были обновлены для отражения текущих версий браузера.

Когда это происходит, в строку user-agent добавляется токен Trident. Этот маркер включает в себя номер версии, который позволяет идентифицировать версию браузера, независимо от текущего режима браузера.

ПОДРОБНЕЕ :http://msdn.microsoft.com/en-us/library/ms537503.aspx

Ответ №2:

Вы уверены, что не работаете в режиме IE7? Вы можете изменить это где-нибудь в настройках разработчика (я думаю, F12).

Комментарии:

1. вы имеете в виду «режим совместимости». Да, это вероятно, потому что в javascript, используя библиотеку Дугласа Крокфордса, вы можете обнаружить это, но на сервере у вас нет шансов.

Ответ №3:

Microsoft предоставляет эту страницу:

http://msdn.microsoft.com/en-us/library/ms537509 (v = против 85).aspx

Согласно образцу Javascript, можно было бы подумать, что IE8 вернет 8, а не 7.