Sam*_*eff 25

浏览器对象模型是浏览器提供的所有内容的更大表示,包括当前文档,位置,历史,框架以及浏览器可能向JavaScript公开的任何其他功能.浏览器对象模型不是标准化的,可以根据不同的浏览器进行更改.

文档对象模型是标准化的,并且特定于当前HTML文档.它由浏览器对象模型公开(即,DOM是BOM的子集).


Šim*_*das 14

BOM

这是一个非正式的术语,因为没有提到它的W3C或WHATWG标准.

一个简单的定义是BOM包含整个对象结构,可以通过浏览器中的脚本访问,从window"包含其他所有内容" 的对象开始,因为它是全局对象.

window对象包含许多属性(尝试console.dir( window );).这些属性在许多Web标准中指定.该window对象的"核心"规范至今仍在HTML标准中指定 - 请参见此处,但我想编辑人员决定将此规范转换为单独的标准只是时间问题.我明确地支持"BOM"或"浏览器环境"标准,以使事情更合乎逻辑.

DOM

另一方面,这是一个正式的术语.您可以在各种标准中找到该术语的定义,例如DOM4标准规定:

DOM是一种语言和平台中立的接口,允许程序和脚本动态访问和更新文档的内容和结构.

请注意重点是文档.与BOM基本上是浏览器中所有API的总称不同,DOM只是那些处理文档的API.

一个简单的定义是DOM被实现为document对象(它是DOM树的根btw).基本上,DOM树(及其中的所有内容)可以被视为DOM的一部分.类似地,DOM树之外的所有东西都不是DOM的一部分.

超出DOM-tree == window除了document对象之外的所有属性