"Фильм должен начинаться с землетрясения, а потом
напряжение должно нарастать."
Альфред Хичкок
Последние годы развитие World Wide Web происходит по знаком Dynamic HTML (сокращенно DHTML).
Трудно найти публикацию, посвященную WWW, в которой не шла бы речь о DHTML, но еще труднее найти
публикацию, в которой это понятие было бы четко сформулировано. В этом разделе мы попытаемся
дать определение Dynamic HTML, приемлемое для практического использования, и проследить этапы
его становления.
В самом общем виде можно сказать, что Dynamic HTML это набор технологий,
работающих на стороне клиента и призванных преодолеть статичность традиционных Веб-страниц.
Точнее говоря, это технологии, которые обеспечивают
- динамическое формирование Веб-страницы в процессе ее загрузки, и
- динамическое изменение Веб-страницы в ответ на действия пользователя.
Для достижения перечисленных целей используются следующие методы:
- динамическое изменение атрибутов и стилей элементов, составляющих HTML-документ;
- динамическое извлечение данных из внешних источников и включение их в Веб-страницу;
- использование динамически загружаемых шрифтов;
- поддержка визуальных и мультимедийных эффектов при отображении страниц;
- механизмы сохранения информации на компьютере-клиенте между сессиями работы.
Все эти явно разнородные методы покоятся, в действительности, на двух китах. Первым из них
является интеграция HTML-документа, каскадных стилей и сценариев клиента, основанная на объектной
модели документа. Вторым использование компонентного программирования,
позволяющего нам встраивать однажды разработанные компоненты во вновь создаваемые документы.
Что же дает DHTML разработчику Веб-узлов? По нашему мнению, основных преимуществ три:
- Повышение конкурентоспособности узла. Узел, содержащий динамически изменяемые цвета,
анимированную графику, систему выпадающих меню и другие стандартные (для современных ОС, но
не для Веба) элементы пользовательского интерфейса, явно привлекательнее для пользователя,
чем обычные статические страницы. Разумеется, при этом нужно иметь чувство меры и соблюдать
общие принципы дизайна.
- Легкость сопровождения. DHTML позволяет нам вынести типовые элементы формирования
страниц нашего Веб-узла в отдельные таблицы стилей и сценарии, а затем включать их одинаковым
образом во все страницы. Это, безусловно, упрощает сопровождение и минимизирует количество
возникающих опечаток и других ошибок.
- Уменьшение трафика. Одна из основных особенностей DHTML состоит в том, что он переносит
основную тяжесть по формированию Веб-страниц с сервера на клиент. Платой за это является загрузка
с сервера сценариев и программных компонентов, которые при правильном проектировании незначительны
по объему. В результате динамические страницы загружаются и отображаются намного быстрее статических,
что особенно важно для отечественных каналов связи, не страдающих чрезмерно высоким качеством.
См. также мою статью
WDH+: Влияние DHTML на трафик.
Объективности ради следует остановиться и на тех недостатках DHTML, о которых постоянно говорят
сторонники "Веб-страниц, одинаково отображаемых всеми обозревателями"1.
По их мнению, Dynamic HTML не оправдывает себя прежде всего потому, что он не стандартизован,
и под каждый из популярных Веб-обозревателей нужно писать свою версию HTML-документа. Действительно,
DHTML, как и всякая другая новая технология, не оформился пока в четкий стандарт. Тем не менее,
усилия по созданию динамических страниц окупаются хотя бы по перечисленных выше причинам. Да
и отсутствие стандарта никогда не мешало продвижению перспективных технологий (электроприборы,
к примеру, существуют гораздо дольше, чем Интернет, но никого не смущает то, что часть из них
рассчитана на 220В, а часть на 127В).
Если присмотреться внимательнее, то противодействие распространению DHTML вызвано совершенно
другой причиной. Дело в том, что до сих пор создание Веб-страниц не требовало специальных знаний,
кроме знакомства с HTML и умения минимально манипулировать графикой. С появлением DHTML ситуация
изменилась в корне: разработка динамической страницы требует программирования на сценарном языке,
сопряженного с пониманием работы обозревателя на уровне генерации и обработки событий, владением
основами пользовательского интерфейса и т. п. Иными словами, Веб-дизайн востребовал специалистов,
что у многих вызывает неприятие. На самом деле, демократическая сущность WWW от этого не пострадала.
По-прежнему любой желающий может создать, скажем, свою домашнюю страничку на уровне своих знаний,
и DHTML этому не помеха. Другое дело, что профессиональные разработки должны соответствовать
по уровню лучшим из наличествующих технологий, но на то они и называются профессиональными.
Dymanic HTML родился в процессе конкурентной борьбы между Веб-обозревателями корпораций Netscape
и Microsoft. Он появился в обозревателе Netscape Navigator 4, где были введены два новых тега
LAYER и ILAYER, которые позволяли создавать на Веб-страницы
слои с динамически изменяемыми свойствами (положением на странице, стилями отображения
и т. п.). В ответ на это Microsoft в Internet Explorer 4 предложили намного более мощную
поддержку динамических страниц, которая не использовала нестандартных тегов и опиралась на единый
подход к HTML-документу как к дереву объектов с динамически изменяемыми атрибутами и свойствами
стилей.
Основное различие между двумя подходами состояло в парадигме самого понятия "динамическая
страница". Netscape под этим понимал динамическое формирование Веб-страницы в процессе
ее загрузки и последующую косметическую правку в ответ на действия пользователя без существенных
изменений содержания страницы. Microsoft с самого начала занял позицию динамического формирования
и изменения любых элементов страницы в любой момент ее существования.
Понятно, что такое различие моделей DHTML в основных обозревателях никак не соответствует базовой
концепции WWW как платформо-независимой информационной сети. Поэтому W3C был вынужден предпринять
усилия по стандартизации Dynamic HTML и начал с разработки спецификации объектной модели документа
(DOM), в основу которой была положена модель Microsoft, предложенная W3C в качестве Веб-стандарта.
В результате в октябре 1998 г. был принята рекомендация W3C по первому уровню DOM (DOM 1), а
в ноябре 2000 г. приняты рекомендации по второму уровню DOM (DOM 2), существенно расширяющему
DOM 1.
Тем временем Microsoft выпустил обозреватели Internet Explorer 5 и 5.5, которые существенно
расширили возможности DHTML, причем во многом в направлениях, не предусмотренных стандартами
W3C. Параллельно шла работа над обозревателем Netscape 6, который был призван вернуть часть
рынка, завоеванного Microsoft (летом 2000 г. 86% пользователей WWW использовали Internet Explorer
и только 14% Netscape). С этой целью была создана независимая группа Mozilla.org
, которая опубликовала в Сети исходные тексты
обозревателя Netscape и собрала группу независимых разработчиков для приведения его в соответствие
стандарту. Результатом их работы стало ядро обозревателя Gecko, почти в полной мере соответствующее
стандартам HTML 4.0, CSS1 и DOM 1 (поддержка стандартов CSS2 и DOM 2 реализована частично) и
одновременно сохранившее некоторую совместимость с моделью Netscape 4. Gecko является основой
обозревателя Netscape 6, который после двух с половиной лет обещаний вышел, наконец, в свет
в конце 2000 г. Выпущенная версия Netscape 6 пока очень сырая, и в ближайшее время следует ожидать
появления ее новых сборок, которые должны будут заменить Netscape 4.
Таким образом, сегодня на рынке присутствуют:
- обозреватели с ядром MSHTML корпорации Microsoft. Прежде всего это Microsoft Internet Explorer
5.x, динамическая модель которого близка к DOM 1 и DOM 2, но не совпадает с ними. Это обозреватель,
который установлен на абсолютном большинстве клиентских компьютеров, подключенных к Вебу,
и который предлагает самую богатую на сегодня палитру технологий DHTML.
- Netscape 4.x (наиболее стабильная версия 4.7), поддерживающий исходную динамическую модель
Netscape, которую следует признать на сегодня морально устаревшей.
- Обозреватели с ядром Gecko (Mozilla/5.0, Netscape 6). Эти обозреватели приведены в соответствие
со стандартами W3C, но еще не приобрели товарного вида.
В соответствии со сказанным, наше описание Dynamic HTML построено следующим образом. В этой части
мы рассматриваем спецификацию объектной модели документа согласно стандартам W3C и ее реализацию
в MSHTML и Gecko. Нестандартные возможности Microsoft DHTML и Gecko DHTML рассматриваются в статьях WDH+
(за исключением объекта window, который пока не стандартизован, и в силу своей важности
рассматривается здесь (см. гл. 4.13 и 4.14).
Динамическую модель Netscape 4.x мы решили не описывать, как представляющую скорее исторический
интерес, чем практический (решающим аргументом здесь послужил тот факт, что сама корпорация
Netscape отказалась от поддержки слоев в новом обозревателе).
О Gecko-обозревателях см. также:
WDH+: Богач, бедняк...
1 Сторонникам этого романтического подхода можно посоветовать
только одно: заключайте весь документ в теги PRE это единственный
шанс, что ваша страница будет отображаться более или менее одинаково во всех обозревателях.
Что касается политического подтекста подобной позиции (обычно связанного с пресловутым лозунгом
«Microsoft must die»), то этот справочник написан не для борцов с монополиями, а
для тех, кто хочет создавать качественные продукты, пользуясь для этого всеми доступными средствами.
|