Internet Explorer 8 (IE8)

Встречаем финальный IE8. Как известно, предыдущие версии IE являлись головной болью любого HTML-кодера. Что изменилось в 8-й версии? Немало.

HTML, CSS

  • Полностью новый движок рендеринга, где уделили большое внимание поддержке CSS 2.1 и, наконец, отказались от порочной парадигмы hasLayout, имевшей место в IE предыдущих версий и доставлявшей веб-разработчикам множество проблем.
  • Поддержка CSS-свойств семейства display: table, позволяющих придать табличный вид и поведение нетабличным по семантике HTML-элементам (например, спискам UL или элементам DIV). Это открывает новые возможности для качественной вёрстки, сочетающей соблюдение веб-стандартов с удобством табличной модели представления. Ранее такая возможность поддерживалась всеми браузерами, кроме IE.
  • Наконец-то устранены паразитные необнуляемые внешние отступы у полей ввода текста (<input type="text" />) и разделителей (<hr />), делавшие невозможной кроссбраузерную их стилизацию без обходных манёвров типа назначения отрицательных полей (margin) или добавления обрамляющих элементов. Кроме того, внутренними отступами кнопок (<input type="submit" />, <button />), которые в IE6/7 были пропорциональны длине надписи на кнопке, теперь можно управлять при помощи CSS-свойства padding вместо ухищрений типа overflow: visible или указания явной ширины, к которым приходилось прибегать применительно к IE ранее.
  • Ширина всех дочерних блочных элементов абсолютно позиционированного элемента теперь определяется шириной самого широкого из них, как это уже много лет происходит во всех других браузерах. Это весьма актуально, например, при реализации выпадающих меню, которым в IE6/7 из-за проблем этих версий IE приходилось задавать фиксированную ширину или динамически назначать её средствами JavaScript.
  • Альтернативный текст для изображения (указываемый в рамках атрибута alt элемента img) теперь не отображается как всплывающая подсказка, что было характерно для предыдущих версий и противоречило изначальному предназначению атрибута alt именно как альтернативного (а не дополнительного или описательного) текста, имеющего смысл только в тех ситуациях, когда пользователь не имеет возможности увидеть само изображение (например, если он отключил отображение изображений в браузере из соображений экономии интернет-трафика). Чтобы вставить описание HTML-элемента, в визуальных браузерах отображаемое в виде всплывающей подсказки, следует использовать атрибут title.

JavaScript

  • Поддержка программного интерфейса (API) Selectors, позволяющего получать доступ к элементам HTML-документа простым и изящным образом — с использованием CSS-селекторов — вместо громоздкого и менее наглядного кода с применением DOM. Эта техника довольно давно и чрезвычайно успешно используется в мощных современных JavaScript-библиотеках типа jQuery, но ранее реализовывалась на чистом JavaScript, в то время как родная реализация работает априори во много раз быстрее. Аналогичной возможностью будут обладать и грядущие новейшие версии современных браузеров Firefox 3.5, Opera 10, Safari 4 и Chrome 2, где поддержка CSS-селекторов гораздо шире, чем в IE. (Кстати, jQuery уже поддерживает Selectors API начиная с версии 1.3, используя встроенные возможности браузера, если он это позволяет.)
  • Поддержка кодирования и декодирования данных в формате JSON, являющемся более удобным, чем XML, и широко используемом в AJAX-приложениях. В отличие от прямой интерпретации JSON-кода как обычного JavaScript-кода при помощи стандартной JavaScript-функции eval, использование объекта JSON более безопасно при декодировании данных, полученных из ненадёжных источников (декодируются только данные, а потенциально опасные скрипты запущены не будут); в отличие же от решений на чистом JavaScript родная реализация работает намного быстрее. Аналогичная возможность будет в грядущем Firefox 3.5.

Прочее

  • Поддержка масштабирования целиком страниц, в отличие от IE7, реализована более грамотно: теперь масштабируется не вся страница как единая сущность, а отдельные её элементы, за счёт чего даже увеличенная (в разумных пределах — пока масштабируемые по отдельности элементы страницы банально не «упрутся» друг в друга) страница умещается в окне браузера (без появления полосы горизонтальной прокрутки) — подобно тому, как это происходит в Firefox и Opera.
  • Поддержка полного отключения стилей и переключения между альтернативными таблицами стилей подобно тому, как это давно можно было сделать в таких современных браузерах, как Firefox и Opera. См. пункт меню «Вид» → «Стиль» (View → Style).
  • Вместо Блокнота для просмотра исходного кода страниц теперь по умолчанию используется встроенный модуль с подсветкой HTML-синтаксиса и нумерацией строк.
  • Для совместимости с веб-страницами, созданными для предыдущих версий IE, введён особый режим совместимости (Compatibility View), при включении которого IE8 начинает отображать страницы так, как это делал IE7. При этом можно задать и сохранить индивидуальное значение это настройки на уровне каждого отдельного сайта. Включить режим совместимости для конкретного сайта можно несколькими способами:
    • со стороны владельца или технического специалиста, создавшего или поддерживающего сайт — добавить meta-элемент X-UA-Compatible в код страницы или настроить веб-сервер на выдачу одноимённого HTTP-заголовка (бюджетный вариант «починки» сайта, если он стал отображаться в IE8 некорректно, а возможности обратиться к квалифицированному специалисту нет);
    • со стороны пользователя — нажать кнопку справа от адресной строки либо выбрать пункт меню «Страница» → «Режим представления совместимости» (Page → Compatibility View).
    Вниманию веб-разработчиков: по умолчанию IE8 включает режим совместимости для всех интранет-сайтов (с доменами вида http://example/), что может приводить к недоразумениям при локальной отладке сайтов в новой версии IE. Чтобы избежать подобных проблем и видеть страницы, отображаемые гарантированно с использованием нового движка IE8, следует вручную отключить опцию «Отобразить узлы интрасети в режиме представления совместимости» (Display intranet sites in Compatibility View) в окне, доступном из меню «Сервис» → «Параметры режима представления совместимости» (Tools → Compatibility View Settings).
  • Устранена ошибка, имевшая место в Internet Explorer 8 вплоть до версии RC1 и заключавшаяся в том, что вертикальная полоса прокрутки многострочного текстового поля (textarea), не отобразившегося (не попавшего в пространство страницы до «линии сгиба») при первичной загрузке страницы, отрисовывалась не у кромки поля, а где-то в левой его трети.

Недостатки

  • В отличие от IE8 RC1, русскоязычную версию финального Internet Explorer 8, как и IE7 в своё время, невозможно установить на англоязычную версию Windows, даже целиком русифицированную при помощи MUI-пакета.
  • По-прежнему невозможно изменить размера шрифта, если на конкретной странице он задан в абсолютных единицах (например, пикселах). (Не следует путать с масштабированием всей страницы [zoom], сопровождающимся искажением изображений, в то время как изменение размера шрифта осуществляется исключительно с целью повышения разборчивости текста без влияния на качество отображения графики.)
  • JavaScript-свойство innerHTML по-прежнему возвращает обезображенный HTML-код с тегами в верхнем регистре и атрибутами без кавычек.
  • По-прежнему не поддерживаются нулевые значения colspan и rowspan у ячеек таблиц, как положено по стандарту HTML 4.01.
  • В Internet Explorer 8 не поддерживаются ни canvas (элемент, предназначенный для динамической генерации и отображения графики), ни SVG (формат векторной графики), ни даже CSS-свойство opacity, ни много чего ещё, поддерживаемого в большинстве действительно современных браузеров.

Что ж, как можно видеть, Internet Explorer 8 — значительный шаг вперёд по отношению к предыдущим версиям Internet Explorer. И если те, кто способен сделать осознанный выбор качественного браузера и знает о существовании альтернативы встроенному в Windows решению, этот выбор уже сделали, то для остальных новая версия «Обозревателя Интернет» — отличный шанс сделать свою жизнь и жизнь веб-разработчиков лучше.

О других возможностях IE8 можно узнать на соответствующей странице сайта компании-разработчика.