Document Object Model

DOM(від англ. Document Object Model - «об'єктна модель документа») - це не залежить від платформи та мови програмний інтерфейс, що дозволяє програмам і скриптам отримати доступ до вмісту HTML-, XHTML-і XML-документів, а також змінювати вміст, структуру та оформлення таких документів.
Модель DOM не накладає обмежень на структуру документа. Будь-який документ відомої структури за допомогою DOM може бути представлений у вигляді дерева вузлів, кожен вузол якого є елементом, атрибутом, текстовим, графічним або будь-яким іншим об'єктом. Вузли пов'язані між собою відносинами «батьківсько-дочірній».
Спочатку різні браузери мали власні моделі документів (DOM), несумісні з іншими. Для забезпечення взаємної та зворотної сумісності фахівці міжнародного консорціуму W3C класифікували цю модель за рівнями, для кожного з яких було створено свою специфікацію. Всі ці специфікації об'єднані в загальну групу, що має назву W3C DOM.
Ще один інтерфейс прикладного програмування, званий JDOM, забезпечує більш високий, ніж W3C DOM, рівень для роботи з XML-документами на Java.
Зміст
Традиційний DOM
Традиційний DOM давав можливість підтвердження форми з клієнтської сторони та популярний ефект «трансформації об'єкта».
Проміжний DOM
Проміжний DOM давав можливість маніпулювати властивостями каскадних таблиць стилів (CSS), що впливають на відображення документа. Він також забезпечував доступ до нової властивості під назвою "шари" через властивості "document.layers" ("Netscape Navigator") і "document.all" (в "Internet Explorer"). Через вихідну несумісність у проміжному DOM — розробка веб-сторінок вимагала спеціальноїобробки для кожного випадку.
Пізніші версії «Netscape Navigator» відмовилися від підтримки проміжного DOM. Internet Explorer продовжує підтримку свого проміжного DOM для зворотної сумісності.
Стандартизація
Після виходу "ECMAScript" - "W3C" почала роботу над стандартизацією DOM. Початковий стандарт DOM, також відомий як DOM рівня 1, був рекомендований W3C в кінці 1998 року. Приблизно в цей же час вийшов Internet Explorer 5.0 з обмеженою підтримкою DOM рівня 1. DOM рівня 1 забезпечив повну об'єктну модель для всього HTML- або XML-документа, включаючи спосіб зміни будь-якої частини документа. Неадаптовані браузери (наприклад: Internet Explorer 4.x, Netscape 4.x) широко використовувалися аж до 2000 року.
У 2005 році більшість W3C DOM підтримувалася основними браузерами, що задовольняють ECMAScript, в тому числі Internet Explorer 6.x (2001 рік), Opera, Safari і браузери, засновані на веб-движку. Gecko» (у тому числі «Mozilla», «Firefox», «SeaMonkey» та «Camino»).
Враховуючи існування різних реалізацій DOM у веб-браузерах, серед програмістів поширена звичка спершу перевіряти працездатність тих чи інших можливостей DOM для кожного конкретного браузера і лише потім використовувати їх. Код нижче ілюструє спосіб перевірки на підтримку стандартів W3C DOM — перед тим, як запустити код, що залежить від результату цієї перевірки.
Оскільки DOM підтримує навігацію в будь-якій області (наприклад, батько та попередній брат) і враховує довільні зміни — реалізація повинна принаймні буферизувати документ, який (чи деяка розроблена форма якого) читався до цього часу.
Браузерний двигун
Браузери спираються на свій двигун, коливідбувається перетворення (парсинг) HTML-файлів у DOM. Деякі браузерні движки, наприклад, Trident/MSHTML, так чи інакше мають прив'язку до певного браузеру (у разі, до Internet Explorer). Такі ж движки як WebKit і Gecko використовуються в багатьох браузерах, таких як Safari, Google Chrome, RockMelt, Firefox або Flock. Різні браузерні двигуни підтримують стандарти DOM на різних рівнях відповідності.
Бібліотеки
Веб-браузери
Через несумісність браузерів використання DOM іноді призводить до труднощів HTML-верстки та низької надійності сторінок.