Что такое DOM?
Несмотря на то, что браузер - одно из тех приложений, с которым современные пользователи проводят вместе очень много времени, только единицы из тех, кто не относится к профессионалам в области создания web-страниц, знакомы с его внутренним строением. А уж о такой вещи, как DOM, знают и вовсе единицы. Так что будет совсем не лишним приподнять "завесу тайны" над этой аббревиатурой в нашей ставшей уже традиционной для "Компьютерных вестей" рубрике FAQ.
Расшифровывается DOM как Document Object Model, или, говоря русским языком, объектная модель документа. Фактически, это программный интерфейс, который позволяет получить доступ к отдельным элементам открытого в браузере документа. Это весьма важно, к примеру, для выполняемых браузером скриптов, каким-либо образом модифицирующих содержимое страницы. Модель DOM, применяемая сегодня, универсальна для всех браузеров и соответствует спецификациям, разработанным консорциумом W3 - организацией, которая занимается разработкой стандартов в области Интернета. При этом с помощью DOM может быть представлена любая web-страница, которую способен открыть и отобразить браузер.
Стоит отметить, впрочем, что хотя в настоящее время спецификация DOM стандартизована, в её поддержке разными браузерами есть свои нюансы, в связи с чем программисты, использующие DOM в своих скриптах, вынуждены зачастую вводить проверки на то, какие именно элементы спецификации DOM поддерживаются данным конкретным браузером. Это делает многие скрипты достаточно громоздкими, что, впрочем, искупается их переносимостью между различными браузерами.
Структура документа в DOM является древовидной и соответствует структуре документа, определенной его разметкой, выполненной с помощью тегов. При этом теги, которые имеют атрибуты (т.е. теги вида <tag attrib="attr">), являются составными узлами дерева, так как каждый из атрибутов также является отдельным узлом в DOM-модели. Стоит отметить, что различные браузеры по-разному обрабатывают узлы из пустого текста: часть из них предлагает разработчику так называемый нормализованный DOM, в котором подобные узлы отсутствуют, в то время как другая часть предоставляет разработчику самому возиться с пустыми узлами.
Стоит также отметить, что хотя выше говорилось преимущественно об HTML-документах, объектная модель документа вполне применима и к XML'ам, и достаточно часто используется при работе с последними.
Вадим СТАНКЕВИЧ