DOM是文档对象模型,用来获取或设置文档中标签的属性,例如获取或者设置input表单的value值。
BOM的内容不多,主要还是DOM。由于DOM的操作对象是文档(Document),所以dom和浏览器没有直接关系。另外,BOM不具备浏览器兼容性,使用的时候要注意不同浏览器的区别。
DOM和BOM
参考 DOM与BOM 和 BOM和DOM详解
javascript 有三部分构成:ECMAScript,DOM和BOM。根据宿主(浏览器)的不同,具体的表现形式也不尽相同,ie和其他的浏览器风格迥异。
DOM(文档对象模型)是W3C的标准,所有浏览器公共遵守的标准。
DOM 是HTML和XML的应用程序接口(API),就是把「文档」当做一个「对象」来看待。
DOM 使程序和脚本有能力动态地访问和更新文档的内容、结构以及样式,是平台和语言中立的接口。
BOM(浏览器对象模型)是各个浏览器厂商根据DOM在各自浏览器上的实现,表现为不同浏览器定义有差别,实现方式不同。
BOM 就是把「浏览器」当做一个「对象」来看待,BOM除了可以访问文档中的组件之外,还可以访问浏览器的组件。
BOM 定义了JavaScript可以进行操作的浏览器的各个功能部件的接口,主要处理浏览器窗口和框架,不过通常浏览器特定的JavaScript扩展都被看做BOM的一部分,这些扩展包括:
注意:window 是 BOM 对象,而非 js 对象
Javacsript是通过访问BOM对象来访问、控制、修改客户端(浏览器),由于 BOM的window 包含了document,因此可以直接使用window对象的document属性来访问、检索、修改XHTML文档内容与结构。因为 document对象又是DOM 模型的根节点,也就是DOM的最根本的对象是BOM的window对象的子对象,可以说,BOM包含了DOM,浏览器提供出来给予访问的是BOM对象,从BOM对象再访问到DOM对象,从而js可以操作浏览器以及浏览器读取到的文档。
区别:DOM描述了处理网页内容的方法和接口,BOM描述了与浏览器进行交互的方法和接口。