Стандарт DOM предназначен для работы как с XML_, так и с HTML_документа_ ми. Базовый программный интерфейс (API) модели DOM, к которому относятся
15.4. Обзор объектной модели W3C DOM
интерфейсы Node, Element, Document и другие, относительно универсален и приме_ ним к обоим типам документов. Стандарт DOM также включает интерфейсы, специфические для HTML_документов. Как видно на рис. 15.2, HTMLDocument – это специфический для HTML подынтерфейс интерфейса Document, а HTMLElement – специфический для HTML подынтерфейс интерфейса Element. Кроме того, DOM определяет интерфейсы для многих HTML_элементов, относящиеся к конкрет_ ным тегам. Эти интерфейсы, такие как HTMLBodyElement и HTMLTitleElement, обычно определяют набор свойств, отражающих атрибуты данного HTML_тега.
Интерфейс HTMLDocument определяет различные свойства документа и методы, поддерживавшиеся броузерами до появления стандарта W3C. В их число входят свойство location, массив forms[] и метод write(), описанные в этой главе ранее.
Интерфейс HTMLDocument определяет свойства id, style, title, lang, dir и className. Эти свойства обеспечивают удобный доступ к значениям атрибутов id, style, tit_ le, lang, dir и className, которыми обладают все HTML_теги. (В языке JavaScript слово «class» зарезервировано, поэтому атрибут class в языке JavaScript стал свойством className.) HTML_теги из табл. 15.2 не принимают никаких атрибу_ тов, кроме шести только что перечисленных, и потому полностью представимы интерфейсом HTMLElement.
Таблица 15.2. Простые HTML'теги
<abbr>
<acronym>
<address>
<b>
<bdo>
<big>
<center>
<cite>
<code>
<dd>
<dfn>
<dt>
<em>
<i>
<kbd>
<noframes>
<noscript>
<s>
<samp>
<small>
<span>
<strike>
<strong>
<sub>
<sup>
<tt>
<u>
<var>
Для всех остальных HTML_тегов в части спецификации DOM, относящейся к HTML, определяются специальные интерфейсы. Для многих HTML_тегов эти интерфейсы не делают ничего, кроме предоставления набора свойств, соответст_ вующих HTML_атрибутам. Например, тегу <ul> соответствует интерфейс HTMLU_ ListElement, а для тега <body> есть соответствующий интерфейс HTMLBodyElement. Поскольку эти интерфейсы просто определяют свойства, стандартизованные в HTML, они не документируются в этой книге подробно. Можно спокойно пред_ положить, что объект HTMLElement, представляющий определенный HTML_тег, имеет свойства для каждого из стандартных атрибутов этого тега (соглашения о назначении имен приводятся в следующем разделе).
Примечательно, что стандарт DOM описывает свойства HTML_атрибутов для удобства создателей сценариев. Универсальный способ чтения и установки зна_ чений атрибутов предоставляют методы getAttribute() и setAttribute() объекта Element. При работе с атрибутами, которые не являются частью стандартного языка HTML, обязательно должны использоваться эти методы.
Некоторые из интерфейсов, описанных в HTML DOM, определяют дополнитель_ ные свойства или методы, отличные от тех, которые соответствуют значениям HTML_атрибутов. Например, интерфейс HTMLInputElement определяет методы fo_ cus() и blur(), а также свойство form, а интерфейс HTMLFormElement – методы submit()
328 Глава 15. Работа с документами
и reset(), а также свойство length. Если представление HTML_элемента в Java_ Script включает в себя свойства или методы, которые просто являются отражени_ ем HTML_атрибутов, такие элементы описываются в четвертой части книги. Од_ нако следует отметить, что в справочном разделе не используются длинные име_ на, определяемые DOM. Вместо этого с целью упрощения (и сохранения обратной совместимости) эти элементы представлены под более короткими именами, на_ пример Anchor, Image, Input, Form, Link, Option, Select, Table или Textarea.