Какая разница между объектной моделью браузера и объектной моделью документа?

В чем разница между этими двумя?

Ответ 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