DOM (від англ. Document Object Model - «об'єктна модель документа») - це не залежить від платформи і мови програмний інтерфейс, що дозволяє програмам і скриптам отримати доступ до вмісту HTML, XHTML і XML-документів, а також його анулювання, структуру і оформлення таких документів.
Регламентує спосіб представлення вмісту документа (зокрема веб-сторінки) у вигляді набору об'єктів. Вміст все що перебувати на веб-сторінці: малюнки, посилання, абзаци, текст і т. Д. DOM пов'язує в єдине ціле HTML, мова сценаріїв (Java, PHP) і CSS, надаючи розробникам веб документів інструмент з абсолютно новими якостями (DHTML) модель визначає логічну структуру документа і спосіб доступу і маніпулювання складовими документ елементами. Все що визначено в документі тегами HTML стає доступним для зміни, додавання і видалення.
Чи не накладає обмежень на структуру документа. Будь-який документ відомої структури за допомогою DOM може бути представлений у вигляді дерева вузлів, кожен вузол якого є елементом, атрибут, текстовий, графічний або будь-який інший об'єкт. Вузли зв'язані між собою відносинами батьківський-дочірній.
Браузери мали власні моделі документів (DOM), не сумісні з іншими.
1. Модель DOM гарантує правильну граматику і правильне оформлення документів.
DOM трансформує текстовий файл в абстрактне уявлення дерева вузлів. Це дозволяє повністю уникнути таких проблем, як незакриті або неправильно вкладені теги.
Створене моделлю DOM дерево вузлів - це логічне представлення змісту файлу, що показує, яка інформація в ньому представлена і як її фрагменти співвідносяться один з одним, поза безпосереднього зв'язку з граматикою.
3. Модель DOM спрощує внутрішнє маніпулювання документом.
Завдання розробника, що використовує модель DOM для модифікації внутрішньої структури файлу, спрощується в порівнянні з роботою тих, хто для цієї мети застосовує традиційні механізми маніпулювання файлами.
· DOM рівня 1. Забезпечує можливість роботи з усіма елементами документа за допомогою стандартного набору функцій.
HTML-документи мають ієрархічну структуру, представлену в DOM у вигляді дерева.
DOM складається з вкладених один в одного ієрархічно розташованих об'єктів, які називаються вузлами. Кожен вузол в структурі представляє розташований на сторінці HTML елемент.
Document # 8209; звернення до DOM має починатися зі звернення до даного вузла.
елементні вузли # 8209; містять елементи сторінок.
Текстовий вузол - зберігає вміст документів.
Атрібутний вузол - зберігає атрибути
Відносини між вузлами
Батьківський вузол (parent node) - вузол, в який вкладено даний об'єкт. Вузли-нащадки (child node) - вузол, який вкладений в даний об'єкт. Вузли-брати (sibling node) - вузли знаходяться на однаковому рівні вкладеності по відношенню до їх батьківського вузла. Самий верхній вузол в DOM називається кореневим.
Зменшення навантаження на сервер. Загальні елементи сторінок генеруються за одним шаблоном.
Прискорення реакції інтерфейсу. Завдяки динамічному оновленню сторінок.
Відсутність інтеграції зі стандартними інструментами браузера. Динамічно створювані сторінки не реєструються браузером в історії відвідування сторінок, тому не працює кнопка «Назад» і неможливо створювати закладки на нудний матеріал.
Старі методи обліку статистики сайтів стають неактуальними
Ускладнення проекту. Ускладнюється контроль цілісності форматів і типів.
Низька швидкість при грубому програмуванні. Якщо AJAX-запитів багато на одній сторінці те швидкість знижується.
Ризик фабрикації запитів іншими сайтами. Видимість того що користувач відвідував сайт.
Загальний план роботи з об'єктом XMLHttpRequest можна представити таким чином:
1. Створення примірника об'єкта XMLHttpRequest.
2. Установка обробника події onreadystatechange.
3. Відкриття з'єднання з сервером методом open.
4. Безпосередньо відправка запиту методом send.