上一篇博客我们讲到了DOM,这篇博客我们将继续BOM。
一 什么是BOM?
BOM全称为Browser Object Model浏览器对象模型。可以通过浏览器提供的这些对象,操作浏览器。
二 体系结构
BOM它提供了很多对象,用于访问浏览器的功能。BOM缺少规范,每个浏览器提供商又按照自己想法去扩展它,那么浏览器共有对象就成了事实的标准。所以,bom本身是没有标准的或者还没有哪个组织去标准它。它的的核心是window,它表示浏览器的一个实例,当我们打开浏览器的一个窗口时,系统会为其自动定义一个window对象,有了window对象我们就可以通过它来访问浏览器的功能,比如:提示弹出框。window.alert("我是window对象的方法")。因为window是全局的、整个网页的,所有此处的window是可以省略的。
window对象和普通的对象一样也具有属性和方法,通过这些属性和方法我们可以实现操作浏览器的功能。浏览器将浏览器能够实现的功能封装在对象里,具体表现为对象的属性和方法。外界只要使用我的这些对象的属性和方法就能够实现你想要的效果。这些对象更像是浏览器留给外界的接口,你只要用就好了,至于我内部是如何实现的外界是没有必要知道的。
window对象有一系类的属性,这些属性本身也是对象。如下图所示,window对象包含document对象、frames对象、history对象、location对象等。当打开一个网页的时候这些对象就伴随着window对象自动生成了,window对象与其他对象之间的组合关系。
三 BOM和javascript的关系
BOM是浏览器与外界联通的通道,也可以说是浏览器为外界创建的使用环境,BOM和javascript的关系就是环境与使用者的关系。网页的加载等都是在浏览器的基础上进行的,外界就是通过浏览器提供的接口/环境BOM,来达到与浏览器交互的目的。javascript是基于对象和事件驱动并具有相对安全性的客户端脚本语言。同时也是一种广泛用户客户端web开发的脚本语言,常用来给HTML网页添加动态功能。javascript就是通过浏览器提供的BOM的各个对象来实现网页添加动态功能。
四 BOM和DOM的关系
在上图中我们可以看到window对象中包含一个document对象,每个载入浏览器的HTML文档都会成为Document对象,document对象使我们可以从脚本中对HTML页面中的所有元素进行访问。当浏览器加载一个html页面时,浏览器会根据html页面中的标签,将它解析为DOM中的节点,最终形成DOM结构树。这部分内容在《javascript---
HTML DOM》中已经解释,如有疑问,请移驾。
总之,DOM是BOM的一部分,BOM是浏览器对外提供的对象构成的一个大体系,而DOM是这个体系中只关于文档的一个小体系。
五 总结
BOM就是对浏览器的各种操作封装为对象,外界通过操作这些对象就可以操控浏览器,它是浏览器对外界提供的接口。DOM是BOM的一部分,javascript脚本通过使用这些对象,实现网页的动态功能。