В asp.net-mvc, есть ли способ разграничить пользователей IE7 и пользователей IE8, которые находятся в режиме совместимости? - PullRequest
6 голосов
/ 26 марта 2012

Для пользователей IE7 я хочу добавить специальный баннер «Пожалуйста, обновите сейчас». Я думал, что у меня есть это, но я узнал, что мой баннер появлялся на людях, у которых был IE8, но по умолчанию включен режим совместимости.

В любом случае, можно ли провести различие между этими двумя ситуациями, чтобы я мог изменить свое сообщение:

Пожалуйста, обновите с IE7 до Вы используете IE8, но используете режим совместимости, пожалуйста, отключите его

Вот код, который я сейчас использую в моем представлении:

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

но если я тестирую в IE8 с представлением совместимости, используя приведенный выше код или этот код на стороне клиента:

<!--[if lte IE 7]>

возвращает true и отображается как IE7. Как я могу различить два?

Ответы [ 4 ]

7 голосов
/ 30 марта 2012

Согласно user-agents.org и в некоторых обсуждениях, связанных другими ответами, вы можете различить три случая, проверив строку агента пользователя вы получили.

  • Для MSIE 7.0: Проверить на MSIE 7.0 и отсутствие Trident

    Например: 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)

  • Для MSIE 8.0 в режиме совместимости: Проверьте наличие MSIE 7.0 и наличие из Trident/4.0

    Например: 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)

  • Для MSIE 8.0 в стандартном режиме: Проверьте для MSIE 8.0

    Например: 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)

Чтобы выполнить эти проверки, обратитесь к следующего учебного пособия , заменив всю эту ерунду об iPhone и мобильных устройствах браузерами, которые вы проверяете.:)

Желаем удачи в вашем приложении.

1 голос
/ 04 апреля 2012

Microsoft Понимание строк агента пользователя документ дает довольно подробное объяснение строк агента пользователя, отправленных различными версиями IE (включая режим совместимости).Если вы определили, что пользовательский агент отображает MSIE 7.0, найдите Trident в строке пользовательского агента, который указывает, что браузер на самом деле IE8 + в режиме совместимости.

В документе есть раздел, объясняющий токен Trident и его работу.

1 голос
/ 26 марта 2012

Ввод это "<meta http-equiv="X-UA-Compatible" content="IE=8">" в вашем заголовке заставит IE8 не загружаться в режиме совместимости

0 голосов
/ 26 марта 2012

Я считаю, что TGH прав.

Другой вариант - использовать встроенные функции jQuery для полного тестирования: типа браузера, версии браузера и режима браузера:

$.browser.msie
$.browser.version
document.documentMode
...