Это 14-й день моего участия в августовском испытании обновлений. Узнайте подробности события:Испытание августовского обновления.
предисловие
о примерно【Серия твердотельных накопителей】:
Некоторый интересный контент на переднем плане, нацеленный на 500-1500 слов за 3-10 минут, чтобы что-то получить, не уставая.
DOM является обязательным навыком для фронтенд-инженеров.
DOM Living StandardВот последние стандарты DOM, возможно, вы захотите их собрать.
что такое ДОМ
DOM (объектная модель документа) — это API (интерфейс прикладного программирования) для документов HTML и XML. DOM представляет собой иерархическое дерево узлов, которое позволяет разработчикам добавлять, удалять и изменять части страницы. DOM вырос из DHTML (Dynamic HTML), который был создан Netscape и Microsoft, но теперь стал действительно кросс-платформенным, независимым от языка способом представления и управления разметкой страницы.
DOM0
JavaScriptВ более ранних версиях содержимое API содержимого (например, изображения и формы) предоставляется в файле Early.JavaScriptОпределено в определении'images','forms'и т. д., поэтому мы можем получить доступ к первому изображению или форме с именем «пользователь» следующим образом:
document.images[0]
document.forms['user']
Это фактически предварительная стадия РОМ, не сформировавшая стандартный экспериментальный характер и в настоящее время принято именуемаяDOM0
И что мы знаемonclickсобытие, а такжеDOM0события уровня.
DOM0Преимущества события уровня:
-
эффективный
-
Может быть клонирован Node.clone
-
Удалить события очень просто
container.onclick=nullТолько что -
Немного тоже недостаток, уникальность
Несколько копий будут перезаписаны
Конечно другоеonxxxСобытия тоже, и мы знаемaddEventListenerпринадлежитDOM2событие уровня.
<div id="container" onclick="log1();log2()">点我</div>
<script>
function log1() {
console.log('log1......');
}
function log2() {
console.log('log2......');
}
// 移除事件
container.onclick = null
</script>
DOM1
хорошо известныйNode,document, document.createElementОба определены на уровне DOM1.
Подробнее о, см.Document Object Model (DOM) Level 1 Specification.
В октябре 1998 года спецификация уровня DOM1 стала рекомендованным стандартом W3C, предоставляя интерфейс для базовой структуры документа и запросов, уделяя особое внимание документам HTML и документам XML.
существуетDOM1, DOM состоит из двух модулей:DOM Core(ядро DOM) иDOM HTML. в,DOM CoreОпределяет стандарт структуры документа на основе XML, который упрощает доступ и работу с любой частью документа.DOM HTMLОн расширяется на основе ядра DOM, добавляя объекты и методы для HTML, такие как: JavaScript вDocumentобъект
Каждый узел имеет свойство nodeType, которое представляет тип узла.
12 числовых констант типа Node представляют:
| Константа NodeType | Постоянное значение NodeType | иллюстрировать |
|---|---|---|
| Node.ELEMENT_NODE | 1 | Наши постоянные div, san, input и т.д. |
| Node.ATTRIBUTE_NODE | 2 | Атрибуты. |
| Node.TEXT_NODE | 3 | Содержит обычный текст, интерпретируемый буквально, и, возможно, экранированные символы HTML. |
| Node.CDATA_SECTION_NODE | 4 | Блок CDATA |
| Node.ENTITY_REFERENCE_NODE | 5 | существуетDOM4удалено из спецификации |
| Node.ENTITY_NODE | 6 | существуетDOM4удалено из спецификации |
| Node.PROCESSING_INSTRUCTION_NODE | 7 | для XML-документовProcessingInstruction (en-US),Например<?xml-stylesheet ... ?>утверждение |
| Node.COMMENT_NODE | 8 | Примечания |
| Node.DOCUMENT_NODE | 9 | Представляет всю HTML-страницу |
| Node.DOCUMENT_TYPE_NODE | 10 | Информация о типе документа (doctype). |
| Node.DOCUMENT_FRAGMENT_NODE | 11 | Фрагмент документа. Общая оптимизация производительности. |
| Node.NOTATION_NODE | 12 | существуетDOM4удалено из спецификации |
DOM2
мы знаем ·addEventListner, document.body.style,getElementByIdЭто все вещи уровня DOM2.
-
Ядро DOMLevel2
Подробнее см.DOM-Level-2-Core Overview , DOM-Level-2-Coreа такжеDOM-Level-2-Core Changes
Построен на основе ядра уровня 1, добавляя к узлам больше методов и свойств.
Например
importNode,createElementNS,createAttributeNS,getElementsByTagNameNSandgetElementByIdтак далее -
Представления уровня DOM 2
Подробнее см.DOM-Level-2-Views Overview
Для документа определяются различные представления на основе информации о стиле.
То, что мы используем,
document.defaultView, который возвращает, где находится документWindow. -
События DOM Level2
Подробнее см.DOM-Level-2-Events Overview
Объясняет, как использовать события для взаимодействия с документами DOM.
Мы более знакомы с
addEventListner, на основеEventTargetВся система событий определяется DOM2. -
Стиль DOM уровня 2
Подробнее см.DOM-Level-2-Style Overview
Определяет, как программно получить доступ к информации о стиле CSS и изменить ее.
такие как мы частоCSSStyleDeclaration а такжеCSSStyleSheetэти важные объекты,Не говорите, что не использовали? document.body.styleкоторый возвращаетCSSStyleDeclaration.
-
DOM Level2Traversal и диапазон
Подробнее см.DOM-Level-2-Traversal-Range Overview
Представлен новый интерфейс для просмотра документа DOM и выбора определенных его частей.
Например:createTreeWalkerа такжеcreateNodeIteratorЭти два метода обхода узлов могут быть вам незнакомы:
const nodeIterator = document.createNodeIterator(
document.body,
NodeFilter.SHOW_ELEMENT,
{
acceptNode(node) {
return node.nodeName.toLowerCase() === 'p' ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;
}
}
);
const pars = [];
let currentNode;
while (currentNode = nodeIterator.nextNode()) {
pars.push(currentNode);
}
-
DOM Уровень 2 HTML (DOMLevel2HTML)
Подробнее см.DOM-Level-2-HTML Overview
Он расширяет базовый API DOM уровня 2 [DOM Level 2 Core] для описания объектов и методов, характерных для документов HTML [HTML 4.01] и документов XHTML [XHTML 1.0].
Как правило, функциональные возможности, необходимые для управления иерархическими структурами документов, элементами и атрибутами, находятся в основном разделе; функциональные возможности, зависящие от конкретных элементов, определенных в HTML, находятся в этом разделе.
HTMLOptionsCollectionЭто новое дополнение, не говорите, что не знаете, это<option>Коллекция узлов. интерфейса DOMImplementationhasFeatureНо помните, да.
DOM3
Подробнее см.DOM-Level-3-Core Overview,DOM-Level-3-Coreа такжеDOM-Level-3-Core Changes.
Он завершает сопоставление между документами DOM и XML Infoset, включает поддержку XML Base [XML Base], добавляет дополнительную информацию о пользователе в узлы DOM, предоставляет механизмы для анализа префиксов пространства имен или управления атрибутами «ID» и многое другое.
-
DOM加载和保存模块(Загрузка и сохранение DOM): введены методы загрузки и сохранения документов унифицированным способом. -
DOM验证模块(Проверка DOM): определяет метод проверки документов. -
DOM核心的扩展(Стиль DOM): поддерживает спецификацию XML 1.0, включая XML Infoset, XPath и XML Base.
DOM4
19 ноября 2015 г. был выпущен DOM4.Подробности см.W3C DOM4.
DOM4 добавляет наблюдателей мутаций в качестве замены исходным событиям мутаций.
резюме
Позвольте мне сначала задать вопрос, что мы часто говоримHTML5Он вышел в 2008 году, что он должен вам соответствовать с DOM?
-
onclickСерия — это событие уровня DOM0, функция может быть только одна, и ее можно копировать при определенных условиях. -
addEventListenerСерии — это события уровня DOM2. -
XPathВещи, которые относятся к уровню DOM3, которые обычно не распространены, также могут использоваться для обхода узлов. - DOM4 добавлена возможность наблюдения за изменениями узла.
Подводя итог, можно сказать, что DOM1 и DOM2 — это ядро, а остальное мы не используем.
напиши в конце
Не забывайте первоначальный замысел, [серия SSD], 3-5 минут, 500-1000 слов, есть что набрать, но не устать, если вы считаете, что это хорошо, ваши лайки и комментарии - самая большая мотивация для мне двигаться вперед.
Пожалуйста, посетите группу технического обменаиди сюда. Или добавьте мое облако похорон WeChat и учитесь вместе.
HTML Living Standard
DOM Living Standard
Document Object Model (DOM) Level 1 Specification
DOM-Level-2-Core
DOM-Level-3-Core
DOM Living Standard
Рождение и развитие JavaScript и DOM
Различия между событиями DOM0, DOM1, DOM2 и DOM3
Расширенное программирование на JavaScript (третье издание)
Расширенное программирование с помощью JavaScript (4-е издание)
ДОМ: ДОМ0 ДОМ1 ДОМ2 ДОМ3
# Генерация и разработка JavaScript и DOM