Если условия IE IE не работают

Я заставляю себя орехами, пытаясь заставить условия комментариев работать, и мне не повезло, может кто-нибудь объяснить, что я делаю неправильно?

Вот мой код:

        <!--[if IE 10]>
            IE IS VERSION 10<br />
        <![endif]-->
        <!--[if !IE]><!-->
            Browser is not IE
        <!--<![endif]-->
        <!--[if lt IE 9]>
            IE IS LESS THAN VERSION 9<br />
        <![endif]-->

То, что происходит, вызывает разочарование. Когда я загружаю страницу с указанным выше кодом в IE8, он получает сообщение "IE МЕНЬШЕ, ЧЕМ ВЕРСИЯ 9" . Хорошо? Нет, потому что, когда я загружаю SAME PAGE в IE10, я получаю сообщение "Браузер не IE"

Почему он думает, что IE10 не является браузером IE?! Я просматривал страницу за страницей, но, похоже, что-то не так с моим кодом из-за того, что я нашел.

Ответ 1

IE 10 не поддерживает условные операторы.

Условные утверждения в Internet Explorer 10.. Он будет обрабатывать условные комментарии как обычные комментарии HTML и полностью игнорироваться.

Вместо обнаружения браузера используйте библиотеку обнаружения функций, такую ​​как Modernizr.

нашел решение на impressivewebs в этом comment:

Вот демоверсия

Решение:

if (Function('/*@cc_on return [email protected]*/')()) {
    alert('IE 10');
} else {
    alert('Not IE 10');
}

Это

  • не требует условных комментариев;
  • работает даже при сжатии/обработке комментариев;
  • нет класса ie10, добавленного в Internet Explorer 11;
  • с большей вероятностью будет работать в соответствии с идеей Internet Explorer 11, работающий в режиме Internet Explorer 10 совместимости;
  • не нужен автономный тег script (может быть добавлен в другой код JavaScript в голове).
  • не требуется jQuery для тестирования

Ответ 2

Я удивлен, что никто не добавил в css-единственное решение. Если вы просто хотите использовать css, используйте инструкцию типа:

@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {  
   /* Put your IE-only styles here. Works for IS 10 & IE 11*/
}

Таким образом, вам не нужно полагаться на jquery или на любую разметку html. Просто опубликуйте его в css, и вам хорошо идти.

Теперь, это взломать? Вероятно. Это зависит от использования высококонтрастного тега microsoft, но поскольку ни один другой браузер не использует метку ms, вам должно быть хорошо идти.

Наконец, просмотрите эти страницы для получения дополнительной информации:

Сообщение в блоге

Сайт MS на контрастном теге

Ответ 3

IE 10 отклонил условные комментарии.

В javascript вы можете сделать что-то подобное:

if ($.browser.msie && $.browser.version === 10) {
    // stuff here (like adding an IE10 class to the body or html tag
}

Ответ 4

IE 10, 11 и вверх больше не поддерживают условные комментарии.

Смотрите этот ответ: fooobar.com/questions/50928/...

Ответ 5

Попробуйте добавить следующий метатег в верхней части страницы, чтобы выбрать поведение Internet Explorer 9:

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9">

Это связано с тем, что условные комментарии были удалены в стандартах и ​​режимах Internet Explorer 10 для улучшения совместимости и соответствия HTML5. Это означает, что условные комментарии теперь рассматриваются как обычные комментарии, как и в других браузерах. Это изменение может повлиять на страницы, написанные исключительно для Windows Internet Explorer или на страницах, использующих обход браузера для изменения их поведения в Internet Explorer.