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(). - Поддержка свойства
textContentDOM-узла, позволяющего быстро получить или задать его текстовое содержимое. - Поддержка стандартного, кроссбраузерного метода
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. Пользователю это удобнее, чем раздельная установка браузера и языкового пакета к нему.