Будет ли работать таргетинг на IE8 с условными комментариями?

StackOverflow https://stackoverflow.com/questions/167657

Вопрос

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

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

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

Это было полезно?

Решение

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

Другие советы

Следует отметить одну вещь:

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

Это противоречит первоначальному заявлению 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);

Инструменты / Параметры представления совместимости снимите все флажки

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

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

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

Спасибо

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

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

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

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

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

Недавно написал сообщение об этом в блоге: http://blog.sankhomallik.com/2009/11/16/stop-wasting-time-debugging- на ie8-когда вы-Dont иметь к или-получить ie8 к себя, как-ie7 /

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!

Со своей стороны, я хотел использовать округленные границы, используя 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 }

Интересно, что будет для нас следующей регрессией Internet Exploiter?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top