Internet Explorer 9 (IE9)
- Опубликовано:

Internet Explorer 9 (IE9) — новая версия интернет-браузера Microsoft. Предыдущие версии IE (особенно 6 и 7) отличались «своеобразием» и слабой поддержкой стандартов и возможностей, широко и давно поддерживаемых в других браузерах. Как и IE8, IE9 является значительным шагом вперёд.
К сожалению, IE9 не работает в Windows XP. Таким образом, IE8 — увы, наш новый IE6. С другой стороны, Microsoft по сути добровольно подарила другим — более качественным — браузерам значительную часть рынка (согласно статистике, в России Windows XP используют более 50% пользователей), и велика вероятность, что пользователь, привыкший к отличному от IE браузеру (например, Firefox 4, прекрасно работающему под Windows XP), продолжит использовать привычный браузер даже перейдя на современную версию Windows, и это хорошо.
К сожалению, как и в случае с IE8, Microsoft поспешила выпустить IE9, чтобы, видимо, снова слегка опередить главного конкурента — Firefox, выход наиболее современной и выдающейся — 4-й — версии которого также ожидается в самое ближайшее время. В результате IE9 содержит ряд недоработок, исправить которые в действительности труда не составило бы (например, не поддерживается HTML5-атрибут maxlength
у элемента textarea
).
Ниже — обзор (в основном технического характера) некоторых из новых возможностей IE9, замеченных автором этих строк. Следует заметить, подавляющее их большинство давно реализовано в других браузерах. С другой стороны, отставание IE существенно сократилось, и это не может не радовать.
HTML
Хорошо
- Поддержка HTML5-элементов
canvas
,audio
иvideo
. - Пробельные символы теперь не съедаются и не «схлопываются».
- Поддержка воспроизведения видео в открытом формате WebM. В отличие от Firefox 4, Opera 10.6+ и Chrome, поддержка WebM в IE9 во многом чисто номинальная, поскольку для этого необходимо, чтобы в системе был установлен соответствующий декодер, а это в общем случае маловероятно.
- Поддержка векторного графического формата SVG, в том числе прямое включение SVG-кода в HTML-документ.
Плохо
- Не поддерживаются HTML5-атрибуты
maxlength
,placeholder
,required
у элементов форм и проч. В Firefox 4 поддержка есть. - В элементе
AUDIO
поддерживается только формат MP3. Открытый Ogg Vorbis (поддерживаемый, например, в Firefox), в IE9 не поддерживается. - Не поддерживается WebGL — программный интерфейс для отображения трёхмерной графики в окне браузера. В Firefox 4 поддержка есть.
CSS
- Более полная поддержка CSS3-селекторов (
:last-child
,:nth-child
,:not
,:target
и проч.). border-radius
— закругление углов элементов без применения графики.box-shadow
— создание теней у элементов.opacity
— управление прозрачностью элемента.- Нормальная (в отличие от IE8) поддержка
rgba()
, позволяющего задать цвет с полупрозрачностью. - Возможность задать несколько фоновых изображений для одного элемента, поддерживаемая отныне современными версиями всех основных браузеров: Firefox, Opera, Chrome, Safari, IE.
- Поддерживается применение стилей к произвольным (в том числе не предусмотренным по текущему стандарту) элементам без необходимости прибегать к JavaScript-ухищрениям типа HTML5 shiv.
- Поддержка открытого формата шрифтов WOFF.
- Поддержка CSS Media Queries — возможности задать различные стили в зависимости от размеров доступной области отображения страницы (например, окна браузера).
- Поддержка CSS-функции
calc()
, позволяющей задать численные значения CSS-свойств в смешанных единицах. Например,width: calc(100% - 200px)
. Без этой возможности аналогичного эффекта можно было достигнуть только двумя вложенными элементами в сочетании с использованием отрицательных полей. В Firefox 4 аналогичная функция называется-moz-calc()
. - Data URI: снято имевшее место в IE8 нелепое ограничение в 32 КБ для размера каждого из встраиваемых в CSS изображений.
JavaScript
- Добавлены стандартные свойства-константы DOM-элемента (
ELEMENT_NODE
,TEXT_NODE
и проч.), которые можно использовать вместо численных значений при определении типа узла (Node.nodeType
). - Поддержка метода
getElementsByClassName()
для быстрого получения элементов по названию класса. - Поддержка стандартного, кроссбраузерного метода назначения обработчиков
addEventListener()
. - Поддержка метода
msMatchesSelector()
для проверки соответствия элемента заданному CSS-селектору. В Firefox аналогичный метод называетсяmozMatchesSelector()
. - Поддержка свойства
textContent
DOM-узла, позволяющего быстро получить или задать его текстовое содержимое. - Поддержка стандартного, кроссбраузерного метода
getComputedStyle()
для получения текущих вычисленных значений CSS-свойств. - Поддержка новых методов ECMAScript 5: например,
Array.forEach()
,Array.isArray()
иString.trim()
. - Поддержка интерфейса Selection, позволяющего манипулировать выделенным на странице текстом и включающего знакомые по другим браузерам методы
getSelection()
,selectionStart()
иselectionEnd()
. - Поддержка события
DOMContentLoaded
объектаdocument
. В отличие от событияload
объектаwindow
, событиеDOMContentLoaded
вызывается сразу после окончания разбора кода страницы — без ожидания загрузки изображений и прочих внедрённых на страницу ресурсов. Это удобно для назначения JavaScript-обработчиков в так называемом ненавязчивом (unobtrusive) стиле — когда JavaScript-код не интегрирован в страницу жёстко, а является дополнительным «слоем», расширяющем функциональные возможности веб-приложения. При этом минимизируется вероятность, что пользователь успеет воспользоваться элементом до того, как будет назначен обработчик. Впервые поддержка событияDOMContentLoaded
была внедрена в Mozilla 1.0, затем оно получило поддержку в других браузерах, а в настоящее время является частью спецификации HTML5.
Ошибки
Приятно заметить, что ваш покорный слуга лично внёс посильный вклад в разработку Internet Explorer 9 путём отправки и комментирования баг-репортов, часть которых впоследствии была исправлена.
Исправлено
- Размер шрифта сгенерированного содержимого вычисляется относительно родителя элемента вместо самогО элемента.
- В JavaScript возвращается пустое значение элемента select, если у выбранного option нет атрибута value.
- Невозможно управлять рамкой элемента iframe при помощи CSS (frameborder, наконец, равен нулю по умолчанию).
- Фон блочного сгенерированного содержимого отображается под текстом (мешало использованию генерируемого содержимого для замены текста графикой без дополнительного HTML-кода).
Для просмотра баг-репортов необходима авторизация на сервере connect.microsoft.com.
Не исправлено
- Процентно-закодированные URL-адреса отображаются в нечитабельном виде.
- Мета-элемент X-UA-Compatible игнорируется, если заключён в условный комментарий (HTML5-валидатор рассматривает мета-элемент X-UA-Compatible как ошибку, а включить одноимённый HTTP-заголовок ответа сервера представляется возможным не всегда).
- {white-space: normal} не работает применительно к элементу LEGEND (по-прежнему невозможно использовать семантический элемент
LEGEND
без «бубна» для IE). - element.innerHTML возвращает испорченный HTML (исправлено частично: вместо имён атрибутов — по-прежнему имена свойств: например,
colSpan
вместоcolspan
).
Установка
В отличие от IE8, русская версия IE9 без проблем устанавливается на англоязычную Windows 7. Пользователю это удобнее, чем раздельная установка браузера и языкового пакета к нему.