两者有什么区别?
答案 0 :(得分:26)
浏览器对象模型是浏览器提供的所有内容的更大代表,包括当前文档,位置,历史记录,框架以及浏览器可能向JavaScript公开的任何其他功能。浏览器对象模型不是标准化的,可以根据不同的浏览器进行更改。
文档对象模型是标准化的,特定于当前的HTML文档。它由浏览器对象模型公开(即,DOM是BOM的子集)。
答案 1 :(得分:12)
这是一个非正式术语,因为没有W3C或WHATWG标准提及它。
一个简单的定义是BOM包含整个对象结构,可以通过浏览器中的脚本访问,从window
对象“包含其他所有内容”开始,因为它是全局对象。
window
对象包含许多属性(尝试console.dir( window );
)。这些属性在许多Web标准中指定。 window
对象的“核心”规范现在仍然在HTML标准中指定 - see here,但我想编辑人员决定将此规范转换为单独的规范只是时间问题。标准。我明确地支持“BOM”或“浏览器环境”标准,以使事情更合理和恰当。
另一方面,这是一个正式的术语。您可以在各种标准中找到该术语的定义,例如DOM4标准状态:
DOM是一种允许的语言和平台中立接口 用于动态访问和更新内容的程序和脚本 文件结构。
请注意重点是文档。与BOM基本上和浏览器中所有API的总称不同,DOM只是那些处理文档的API。
一个简单的定义是DOM被实现为document
对象(它是DOM树btw的根)。基本上,DOM树(及其中的所有内容)可以被视为DOM的一部分。类似地,DOM树之外的所有东西都不是DOM的一部分。
超出DOM-tree ==除window
对象之外的document
的所有属性
答案 2 :(得分:3)
如果你采用两个术语的字面含义,Sam的回答是正确的。
实际上,术语“浏览器对象模型”在Web开发中并不常用作DOM,术语DOM用作其同义词 - 例如可用插件列表,而“a”的属性浏览器“,而非”文档“是DOM 0的一部分 - navigator.plugins
API。
答案 3 :(得分:0)
我认为BOM=DOM +(-) non standard properties of the browser
。所以每个浏览器都有自己的BOM
答案 4 :(得分:0)
BOM是整个浏览器的更广泛视图,其中DOM仅限于文档窗口和相关方法。查看完整的文章 javascript-browser-object-model