В чем разница между этими двумя?
Какая разница между объектной моделью браузера и объектной моделью документа?
Ответ 1
Модель объекта браузера представляет собой большее представление обо всем, что предоставляется браузером, включая текущий документ, местоположение, историю, фреймы и любые другие функции, которые браузер может предоставить JavaScript. Модель объекта браузера не стандартизирована и может изменяться в зависимости от разных браузеров.
Объектная модель документа стандартизирована и специфична для текущего документа HTML. Он отображается с помощью модели объектов браузера (т.е. DOM является подмножеством спецификации).
Ответ 2
BOM
Это неофициальный термин, так как нет стандарта W3C или WHATWG, который упоминает об этом.
Одно простое определение состоит в том, что спецификация включает всю структуру объекта, доступную с помощью скриптов в браузере, начиная с объекта window
, который содержит все остальное, поскольку он является глобальным объектом.
Объект window
содержит множество свойств (попробуйте console.dir( window );
). Эти свойства указаны в многочисленных веб-стандартах. "Основная" спецификация объекта window
в настоящее время по-прежнему указана в стандарте HTML - см. Здесь, но я предполагаю, что это только вопрос времени, пока редакторы не решают передать эту спецификацию в отдельный стандарт. Я окончательно заручился стандартом "спецификации" или "среды браузера", чтобы сделать вещи более логичными и подходящими.
DOM
Это, с другой стороны, является формальным термином. Вы можете найти определения этого термина в разных стандартах, например, DOM4:
DOM - это нейтральный интерфейс языка и платформы, который позволяет программ и сценариев для динамического доступа и обновления содержимого и структура документов.
Обратите внимание, как акцент делается на документах. В отличие от спецификации, которая в основном и зонтична для всех API в браузерах, DOM - это только те API, которые имеют дело с документами.
Простое определение будет заключаться в том, что DOM реализуется как объект document
(который является корнем дерева DOM btw). В принципе, дерево DOM (и все внутри него) можно считать частью DOM. Аналогично, все, что находится за DOM-деревом, не является частью DOM.
за пределами DOM-дерева == все свойства window
, за исключением объекта document
Ответ 3
"Объектная модель браузера" (BOM) - это термин с начала 2000-х годов, который не завоевал популярность и был заменен [1] термином "Web API"
Веб-API - это API-интерфейсы JavaScript, доступные для веб-страниц: любые объекты/интерфейсы, их свойства, методы и события, которые браузер делает доступными для страницы, за исключением объектов, таких как String
, которые являются частью самого языка JavaScript.
DOM (объектная модель документа) в контексте веб-разработки представляет собой подмножество веб-API, связанных с манипулированием структурой и содержимым веб-страниц и других "документов".
Исторически DOM разрабатывался как " platform- и независимый от языка интерфейс " со спецификацией DOM Level 1, описывающей привязки ECMAScript (JavaScript) и Java в приложениях. Вы можете по-прежнему использовать API DOM для работы с данными XML/HTML извне браузера (например, используя Xerces в Java), но версия спецификации DOM "Живой стандарт" поддерживается с акцентом на сценарий использования в Интернете и Последний отчет о внедрении W3C включает в основном (если не только) веб-браузеры.
[1] См. Тенденции Google для "объектной модели браузера" и как в современной книге (JavaScript Cookbook: Programming the Web) она лишь кратко упоминается как "спецификация - см. Web API".
[ответ переписан в 2019 году]
Ответ 4
Я думаю BOM=DOM +(-) non standard properties of the browser
. поэтому каждый браузер имеет свою собственную спецификацию
Ответ 5
BOM - более широкий вид всего браузера, где DOM распространяется на окно документа и связанные с ним методы. просмотреть полную статью javascript-browser-object-model