Будет ли работать таргетинг на IE8 с условными комментариями?
-
03-07-2019 - |
Вопрос
Когда выйдет 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?