0

кажется, что, когда веб-страница имеетКажется, что «IE = EmulateIE7» также сделает «<! - [if lt IE 8]>» true?

<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)?

+2

У меня нет никаких фактов, но это звучит как разумный способ поведения IE. –

+0

Разве это не то, что вы ожидаете? Если браузер действительно ведет себя как IE7, то не хотите ли вы, чтобы он делал то, что мог сделать только IE <8? – pkaeding

ответ

1

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

<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.

0

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

0

Если вы говорите 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]-->