Как все мы знаем, Internet Explorer - браузер который имеет тенденцию вызывать у веб-разработчиков большинство головной боли. Возможно это - потому что у Microsoft в настоящий момент есть 3 совсем других версии браузера, которые мы должны учесть. Возможно это - потому что более ранние версии браузеров не придерживались стандартов. Возможно это - потому что IE6 не был обновлен в течение очень многих лет. Но всё-же IE здесь, и мы должны иметь дело с ним.
Проблемы CSS и JavaScript в пределах каждой версии IE дарят нам проблемы функциональности и расположения. Двойные поля, плавающая и абсолютное расположение, и нехватка поддержки PNG - вероятно, самые частые проблемы. К счастью Internet Explorer поддерживал условные комментарии, которые позволяют нам предназначать блоки HTML ко всем браузерам IE или к определённым браузерам IE.
Примеры условных комментариев IE
Code
<!--[if IE]>
<style type="text/css">
a { color:#fff; }
</style>
<![endif]-->
Пример выше настраивает цвет ссылок к красному, если браузер имеет запах Internet Explorer'a.
Code
<!--[if lt IE 8]>
<script src="http://ie7-js.googlecode.com/svn/version/2.0(beta3)/IE8.js" type="text/javascript"></script>
<![endif]-->
Пример выше включает библиотеку IE8.js к странице, если версия Internet Explorer - меньше чем 8.
Code
<!--[if IE 6]>
<script src="DD_belatedPNG.js"></script>
<script> DD_belatedPNG.fix('.png');
</script>
<![endif]-->
Пример выше исправляет проблему с PNG, если браузер - Internet Explorer 6.
Таблица синтаксиса условных операторов
Элемент |
Пример |
Комментарий |
! |
[if !IE] |
Отрицательный оператор. Это помещено сразу перед функцией, оператором, или подвыражением, чтобы инвертировать значение Булевской переменной выражения. |
lt |
[if lt IE 5.5] |
Меньше-чем оператор. Возвращает true, если первый параметр - меньше чем второй параметр. |
lte |
[if lte IE 6] |
Меньше или равный оператор. Возвращает true, если первый параметр меньше чем или равен второму параметру. |
gt |
[if gt IE 5] |
Большее-чем оператор. Возвращает true, если первый параметр больше чем второй параметр. |
gte |
[if gte IE 7] |
Большее-чем или равный оператор. Возвращает true, если первый параметр больше чем или равен второму параметру. |
( ) |
[if !(IE 7)] |
Операторы подвыражения. Используемый в соединении с булевыми операторами, чтобы создать более сложные выражения. |
& |
[if (gt IE 5)&(lt IE 7)] |
Оператор "И". Возвращает true, если все подвыражения оцениваются к true. |
| |
[if (IE 6)|(IE 7)] |
Оператор "ИЛИ". Возвращает true, если какое-либо из подвыражений оцениваются к true. |