Определите, находится ли в режиме совместимости IE8 с помощью условных выражений

Из своего исследования я понял, что IE8 раздражает, например, принудительно переводит себя в режим IE7 для локальных узлов интрасети и диапазонов локальных IP-адресов. Я понимаю из предыдущего вопроса, что нет возможности использовать условные операторы как, независимо от Независимо от того, выполняется ли рендеринг IE8 в режиме IE8 или IE7, он все равно будет использовать только условное выражение <!--[if IE 8]>.

Поскольку этот вопрос был задан некоторое время назад (судя по всему, во время бета-фазы IE8), мне интересно, изменилось ли это или есть какой-либо другой способ с использованием условных выражений для определения совместимости IE8. режим.

Спасибо!


person Konrad    schedule 29.06.2010    source источник
comment
возможный дубликат Как определить, является ли IE8 работает в режиме совместимости?   -  person Pekka    schedule 29.06.2010
comment
Не обман, потому что я специально спрашиваю об использовании условных выражений.   -  person Konrad    schedule 29.06.2010


Ответы (3)


Нет, вы не можете сделать это с помощью условных выражений.

Лучший способ сделать это - использовать свойство document.documentMode, как описано в ссылке, опубликованной Пеккой. Как определить, работает ли IE8 в режиме совместимости посмотреть?

person Nate Dudek    schedule 29.06.2010


В конце концов, я решил смешать две общие стратегии, чтобы справиться с этой ошибкой.

Я создал переопределенный файл CSS, который импортирую с использованием условных комментариев. Однако в случае IE 8 или 9 это переопределение выглядит не так хорошо, поэтому я включаю переключатель заголовка «принудительно включить IE в последний режим рендеринга», как показано ниже.

<!--[if lte IE 7]>
  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  <link rel="stylesheet" type="text/css" href="/Content/IE7Overrides.csss" />
<![endif]-->

Это обеспечивает IE7 приличную отказоустойчивость, но заставляет IE8 и IE9 отображать его в последней версии браузера, который будет правильно отображать таблицу на основе CSS.

person Jeff    schedule 10.10.2012
comment
Как только вы нажимаете условный комментарий, IE определяет, в каком режиме он находится. Из-за этого вложенный метатег не будет работать и не установит IE в пограничном режиме. Вы можете увидеть очень длинную ветку комментариев об этой проблеме в репозитории HTML5BP на Github: github.com/ h5bp / html5-template / issues / 378 - person calvinf; 16.04.2013
comment
@calvinf: Странно, потому что он работал в продакшене несколько месяцев. Должно быть, происходит что-то еще, что решает проблему. - person Jeff; 16.04.2013
comment
ваши страницы устанавливают X-UA-Compatible через HTTP-заголовок? Кроме того, страницы без X-UA-Compatible обычно будут отображаться в пограничном режиме, если ваша страница не находится в одном из списков просмотра совместимости Microsoft IE (или на сайте интрасети). - person calvinf; 17.04.2013
comment
@calvinf: Честно? Не помню. Я тоже не могу проверить, так как я больше не в компании, в которой работал, когда задавал этот вопрос в прошлом году. - person Jeff; 17.04.2013