Почему только IE имеет условные комментарии? - PullRequest
1 голос
/ 07 октября 2011
<!--[if IE 6]>
Special instructions for IE 6 here
<![endif]-->

Существуют ли другие виды условных комментариев, которые я пропускаю, или только IE получает их?

Кроме того, почему только IE получает их?

Ответы [ 3 ]

3 голосов
/ 07 октября 2011

Ты прав; только IE имеет эту функцию.

Это особенность, которую Microsoft изобрела для IE еще во времена войн браузеров. Он никогда не был утвержден в качестве стандарта, и никакой другой производитель браузеров никогда не применял его.

Они реализовали его как часть набора функций, направленных на то, чтобы облегчить жизнь разработчикам только для IE, чтобы они могли выяснить, в какой версии IE они работали. Это было необходимо, поскольку IE (как и другие браузеры того времени) ) разрабатывал нестандартные функции, и часто существенные изменения происходили от одной версии к другой.

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

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

Текущее мышление поддерживает обнаружение функции вместо обнаружения браузера / версии. Для этого вы используете инструмент, такой как Modernizr , чтобы определить функции, поддерживаемые браузером пользователя, что дает вам более тонкий контроль над тем, как работать со старыми браузерами.

Однако в случае более старых версий IE браузер настолько сильно несовместим с некоторыми стандартами, что иногда этого недостаточно, и в этом конкретном случае необходимо проверить браузер и версию. Учитывая это, мы рады, что доступна функция условных комментариев. И, учитывая, что ни у одного другого браузера нет таких проблем, вероятно, это то же благословение, что они не поддерживают условные комментарии.

В идеальном мире никто не использовал бы такие старые версии IE, которые требуют такого взлома. Но они есть, и мы должны их поддерживать, поэтому для тех немногих случаев, когда вы не можете сделать это с помощью обнаружения функций, условные комментарии - это путь.

[РЕДАКТИРОВАТЬ]
Это старый ответ, но его стоит восстановить, поскольку в IE10 условные комментарии больше не поддерживаются. IE10 на 1023 * намного лучше, чем его предшественники, и Microsoft активно стремится сделать его максимально современным и совместимым со стандартами. Удаление функции условных комментариев является частью этого толчка. Конечно, для старых версий условные комментарии остаются в силе, и приведенные выше аргументы за и против их использования остаются, но для будущих версий IE10 и будущих версий опция условных комментариев для решения проблем с браузером больше недоступна.

2 голосов
/ 07 октября 2011

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

Полная история: http://msdn.microsoft.com/en-us/library/ms537512%28v=vs.85%29.aspx

0 голосов
/ 07 октября 2011

Это потому, что вам нужны условные комментарии, чтобы помочь IE отобразить вашу страницу. В противном случае большинство страниц будет некорректно отображаться в IE (из-за неправильной обработки значений по умолчанию).

...