Могу ли я определить режим документа IE на стороне сервера, используя объект HttpBrowserCapabilities - PullRequest
2 голосов
/ 24 февраля 2012

Я могу узнать версию браузера и конкретные возможности, используя объект HttpBrowserCapabilities, но есть ли способ найти режим документа, используемый браузером для визуализации?

Эквивалент свойства JavaScript document.documentMode

Режим можно изменить с помощью инструментов разработчика

Обновление

Я надеялся включить отдельную таблицу стилейдля IE7 и ниже, используя что-то подобное на моей странице макета бритвы ...

@if (ViewContext.IsBrowserOlderThanIE8()) {
<link href="Ie7.css" rel="stylesheet" type="text/css" />
}

Внутри функции IsBrowserOlderThanIE8 Я могу определить версию браузера, но этого недостаточно, чтобы узнать, в каком режиме документа находится клиентс помощью.В режиме документа больше внимания уделяется фактическому используемому механизму рендеринга.

Ответы [ 3 ]

3 голосов
/ 24 февраля 2012

Вы должны иметь возможность использовать Request.UserAgent, чтобы получить строку, в которой есть флаг возможности.

Проверьте эти 2 ссылки.

Понимание строк User-Agent

Свойства агента пользователя

Редактировать Подумал, я бы добавил больше деталей. По сути, токен Trident строки User-Agent является РЕАЛЬНОЙ версией браузера, а токен MSIE - режимом браузера, который он использует. Вы можете легко проверить это, используя первую ссылку и запустив fiddler, чтобы увидеть, как выглядят заголовки HTTP.

БОЛЬШЕ РЕДАКТИРОВАТЬ Я включаю Fiddler и захожу на www.yahoo.com с IE9.0 и вижу User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0) Затем я нажимаю кнопку режима совместимости и вижу:

User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; Zune 4.7)

Посмотрите, как трезубец = 5,0, но MSIE - 9,0, а затем 7,0?

В зависимости от URL-адреса, на который вы идете, существуют способы принудительного использования этой информации. Например, в веб-приложении, над которым я сейчас работаю, мы включаем режим совместимости IE7 по нескольким причинам.

1 голос
/ 27 июня 2014

Нет.Вы не можете определить режим документа с помощью кода на стороне сервера.Вы можете проверить комп.режим со значением трезубца в пользовательском агенте, который по умолчанию задает режим документа.Ключевое слово .. ПО УМОЛЧАНИЮ ... МОЖЕТ БЫТЬ ИЗМЕНЕНО через F12.Если пользователь затем снова меняет режим документа, на что-то помимо того, что компат.режим изменит его на, тогда вы не сможете увидеть изменения.

0 голосов
/ 18 ноября 2014

Вы можете определить его на стороне клиента, а затем запросить у клиента правильный файл CSS ...

<head>
<script type="text/javascript>"
    ...
    var choice;
    if (condition) {
        choice = 'ie7';
    } else {
        choice = 'default';
    }
    document.writeln('<link type="text/css" rel="stylesheet" href="' + choice + '.css" />');
</script>
...
</head>

И, конечно, вы можете сделать этот маленький «селекторный» скрипт включенным файлом, вместо того, чтобы фактически кодировать его как встроенный в каждую создаваемую вами страницу.

...