Похоже, что "IE=EmulateIE7" также сделает "<! - [if lt IE 8]>" правдой?

Кажется, что когда веб-страница имеет

<meta content='IE=EmulateIE7' http-equiv='X-UA-Compatible' />

так что IE 8 будет эмулировать IE 7, а затем на веб-странице, когда есть

<!--[if lt IE 8]> 
  <link href="http://www.example.com/stylesheets/compiled/ie.css" type="text/css" />
<![endif]-->

тогда это будет также загрузка ie.css?

То есть это IE 8, эмулирующий IE 7, и поэтому lt IE 8 будет true?

Обновление: но затем, переменная на стороне сервера HTTP_USER_AGENT все еще будет говорить IE 8? Поскольку браузер обращается к серверу как IE 8, выдает IE 8 в виде строки HTTP_USER_AGENT, а затем сервер отвечает, желая эмулировать IE 7. Поэтому, если серверный язык, такой как PHP, обнаруживает HTTP_USER_AGENT, он все равно будет IE 8 в режим совместимости (режим эмуляции IE 7)?

3 ответа

Решение

В этом весь смысл этого метатега, не так ли? В тот момент, когда у вас есть это:

<meta content='IE=EmulateIE7' http-equiv='X-UA-Compatible' />

IE8 начинает вести себя на стороне клиента как IE7:

  • Ваши страницы будут отображаться так же, как в IE7
  • Ваши условные комментарии с таргетингом на что-либо старше IE8 (<!--[if lt IE 8]>) также будет прочитан, и код внутри выполнен, так ie.css загружен

Однако переключение IE7 происходит только после того, как IE8 читает этот метатег. Так как ваш HTML возвращается как часть ответа, IE8 должен сначала запросить его. Поскольку IE8 заранее не подозревает, что этот метатег появится, строка отправляемого им агента пользователя выглядит так: MSIE 8.0, Затем PHP распознает его как IE8.

Если вы говорите ie8 подражать ie7, вы можете верить, что ваш css для ie7 должен работать правильно. Просто используйте lte вместо lt.

<!--[if IE 8]> 
   <meta content='IE=EmulateIE7' http-equiv='X-UA-Compatible' />
<![endif]-->
<!--[if lte IE 8]> 
  <link href="http://www.example.com/stylesheets/compiled/ie.css" type="text/css" />
<![endif]-->

Если вам нужно другое решение (и вы хотите его использовать), вы можете использовать jquery для обнаружения браузера (jQuery.browser) . Это приводит к ie7 для ie8 в режиме совместимости.

Другие вопросы по тегам