浏览器对象模型和文档对象模型之间有什么区别?

时间:2010-02-06 15:27:25

标签: html dom browser

两者有什么区别?

5 个答案:

答案 0 :(得分:26)

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

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

答案 1 :(得分:12)

BOM

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

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

window对象包含许多属性(尝试console.dir( window );)。这些属性在许多Web标准中指定。 window对象的“核心”规范现在仍然在HTML标准中指定 - see here,但我想编辑人员决定将此规范转换为单独的规范只是时间问题。标准。我明确地支持“BOM”或“浏览器环境”标准,以使事情更合理和恰当。

DOM

另一方面,这是一个正式的术语。您可以在各种标准中找到该术语的定义,例如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

相关问题