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 путём отправки и комментирования баг-репортов, часть которых впоследствии была исправлена.
Исправлено (для просмотра баг-репортов необходима авторизация на сервере connect.microsoft.com):
- Размер шрифта сгенерированного содержимого вычисляется относительно родителя элемента вместо самогО элемента
- В JavaScript возвращается пустое значение элемента select, если у выбранного option нет атрибута value
- Невозможно управлять рамкой элемента iframe при помощи CSS (frameborder, наконец, равен нулю по умолчанию)
- Фон блочного сгенерированного содержимого отображается под текстом (мешало использованию генерируемого содержимого для замены текста графикой без дополнительного HTML-кода)
Не исправлено:
- Процентно-закодированные URL-адреса отображаются в нечитабельном виде
- Мета-элемент X-UA-Compatible игнорируется, если заключён в условный комментарий (HTML5-валидатор рассматривает мета-элемент X-UA-Compatible как ошибку, а включить одноимённый HTTP-заголовок ответа сервера представляется возможным не всегда)
- {white-space: normal} не работает применительно к элементу LEGEND (по-прежнему невозможно использовать семантический элемент
LEGENDбез «бубна» для IE) - element.innerHTML возвращает испорченный HTML (исправлено частично: вместо имён атрибутов — по-прежнему имена свойств: например,
colSpanвместоcolspan)
Установка
В отличие от IE8, русская версия IE9 без проблем устанавливается на англоязычную Windows 7. Пользователю это удобнее, чем раздельная установка браузера и языкового пакета к нему.
Комментарии | добавить
Ещё баги:
— Не поддерживается text-shadow, что странно.
— Замечены баги с исчезающим фоном и текстом (динамические, после того как пошевелишь мышкой).
— Несмотря на заявленную скорость, её не очень-то и заметно, если сравнивать с другими браузерами, а не прошлыми версиями. Особенно показательна страница хабра с более чем тысячью комментариями, которую быстро открывает и обрабатывает только Опера. Яндекс.Карты так вообще на моём андроид-телефоне работают быстрее (Motorola Milestone).
— 64-битная версия не поддерживает JIT-компиляцию, что ещё больше замедляет работу.
не отрабатывается javascript, меняющий фоновый рисунок.