2013-04-15 1 views
0

Возможно ли различать запрос от IE7 и запрос, поступающий с более высокой версии IE, работающего в режиме совместимости?Как различать между совместимостью ie7 и IE на более высоких версиях на сервере

Я бы предпочел чистое решение на стороне сервера, связанное с JavaScript.

+0

Как я знаю только один способ, чтобы получить эту информацию, чтобы использовать строку User-Agent, но IE скрывает это очень хорошо, я В обоих случаях вы получите 'MSIE 7.0' http://msdn.microsoft.com/en-us/library/ms537503(v=VS.85).aspx – outcoldman

+0

Я бы сказал, что не стоит пытаться дифференцировать их. Да, есть некоторые заметные ошибки в режиме совместимости, которые делают его отличным от реального IE7, но на самом деле вы не должны получать пользователей режима совместимости в любом случае, если не находитесь в корпоративной среде, которая его поддерживает. Предполагая, что у вас есть правильные метатеги на месте, вы можете заставить IE избегать режима совместимости, поэтому любые пользователи режима совместимости, которые вы получите, будут устанавливать его вручную. Единственный пользователь, который может получить режим совместимости, - это сам, проверяя локально, из-за настроек интрасети IE. Но вы также можете отключить это. – Spudley

+0

@Spudley - проблема в том, что приложение развернуто по интрасети, а настройки просмотра совместимости IE переопределяют все мои настройки, чтобы запустить приложение в режиме совместимости –

ответ

1

Проверьте агент пользователя для версии IE и Trident версии, как и в this article:

string userAgent = Request.UserAgent; //entire UA string 
string browser = Request.Browser.Type; //Browser name and Major Version # 

if (userAgent.Contains("Trident/5.0")) //IE9 has this token 
{ 
    if (browser == "IE7") 
    { 
     mode = "IE9 Compatibility View"; 
    } 
    else 
    { 
     mode = "IE9 Standard"; 
    } 
}