Будет ли работать таргетинг IE8 с условными комментариями? - PullRequest
18 голосов
/ 03 октября 2008

Когда выйдет IE8, будет ли работать следующий код для добавления условной таблицы стилей?

<!--[if IE 8]>
  <link rel="stylesheet" type="text/css" href="ie-8.0.css" />
<![endif]-->

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

Ответы [ 7 ]

22 голосов
/ 03 октября 2008

Стоит отметить:

Это работает, НО , если вы загружаете страницу / сайт локальная сеть (например, Интранет) она будет загружена в IE7 режим по умолчанию! (обновление - localhost [*] является особым случаем, что делает рендеринг в стандартном режиме)

Это идет вразрез с первоначальным заявлением MSFT о переходе к СТАНДАРТАМ по умолчанию.

, например

http://127.0.0.1/mysite/mypage.php  <-- IE8 by default (updated!)
http://localhost/mysite/mypage.php  <-- IE8 by default (updated!)
http://machinename/mysite/mypage.php  <-- IE7 by default
http://192.168.100.x/mysite/mypage.php  <-- IE7 by default
http://google.com/  <-- IE8 by default

[*] - Скотт Диккенс [MSFT] отметил в комментарии здесь, в блоге IE , что localhost - это особый сценарий во внутренней сети (часто используемый для разработки интернет-сайтов), поэтому он будет отображаться в режиме стандартов. по умолчанию.

Чтобы проверить, в каком режиме действительно отображается страница в IE8, вы можете использовать инструменты проверки разработчика или использовать этот код букмарклета (работает только в IE8):

javascript:
var vMode=document.documentMode;
var rMode='IE5 Quirks Mode';
if(vMode==8){
  rMode='IE8 Standards Mode';
} else if(vMode==7){
  rMode='IE7 Strict Mode';
}
alert('Rendering in: '+rMode);
14 голосов
/ 03 октября 2008

У меня сработало - как в режиме причуд, так и в режиме соответствия стандартам. Однако он не работает при переключении в режим совместимости IE8.

3 голосов
/ 20 марта 2009

Инструменты / Настройки просмотра совместимости

снимите их все

0 голосов
/ 28 декабря 2009

Со своей стороны я хотел использовать округленные границы, используя css. IE8 на Vista не поддерживает такие. А поскольку графика была такой, что на закругленных границах также была бы видна округлая тень, в IE8 страница выглядела ужасно.

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

Затем я посмотрел на перевод его в режим совместимости / совместимости, однако, он все еще не работал, так как используемые мной хаки CSS больше не работали для IE8.

Последнее, но не менее, я нашел работающий хак CSS, который правильно отобразит страницу в режиме совместимости.

* + html #test[id] { color:lime } 

Теперь я не знаю, работает ли это для IE7 или ниже, так что у вас было бы по крайней мере три различные хаки для каждого релиза IE, который вы хотите поддерживать, например

* + html #test,
    html+body #test,
    * html body #test
    { color:lime }

Интересно, что нам скажет следующая регрессия эксплуататора Интернета?

0 голосов
/ 22 ноября 2009

IE8 выглядит довольно хорошо по сравнению с IE7, у меня есть таблицы стилей для IE6, IE7 и IE8; сначала я подумал, что условные комментарии не работают для IE8, после небольшого эксперимента я обнаружил, что некоторые правила не применяются IE8 только потому, что мне нужно было сначала поместить родительский или родительский класс, например, у меня был класс как

.niceclass {some:properties;more:properties;}

это сработало только , если я изменил его на что-то вроде:

.parentclass .niceclass {some:properties;more:properties;} или

#parentselector .niceclass {some:properties;more:properties;}

Между прочим, в моем css-файле, предназначенном только для IE8, у меня есть только одно правило переопределения, остальное визуализируется почти как Firefox, хотя это не заставляет меня покидать FF!

0 голосов
/ 17 ноября 2009

Зачем вообще писать отдельную таблицу стилей для IE8?

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

Все, что вам нужно сделать, это поставить ПРАВО НИЖЕ тега открывающей головки. Где-нибудь еще, и это не сработает.

И это в среднем на полчаса меньше работы на проект, не требуется интенсивной отладки для IE8!

Даже Msn.com делает это - иронично, а?

Недавно написал в блоге сообщение об этом: http://blog.sankhomallik.com/2009/11/16/stop-wasting-time-debugging-on-ie8-when-you-dont-have-to-or-get-ie8-to-behave-like-ie7/

0 голосов
/ 07 августа 2009

Спасибо за вашу помощь. Я нашел решение, очевидно, проблема в том, что каждая таблица стилей использует свой собственный атрибут title. Как только я снял название, кроме основной таблицы стилей, никаких проблем.

Это странная проблема, уникальная для IE8 - и хотя мне сказали, что она должна работать таким образом, что-то связанное с «Предпочтением таблицы стилей» - она ​​служит только для создания проблем, поскольку решение требует удаления заголовка может быть полезным при написании сценариев и т. д. - когда вам нужно вызвать таблицу стилей.

В любом случае, не уверен, является ли это ошибкой или она должна быть такой, но я надеюсь, что Microsoft продолжит расследование.

Спасибо

...