BOM:BrowserObjectModel,浏览器对象模型,提供JS中对浏览器的各种操作的对象,是JS应用中唯一没有相关标准的部分,这事BOM经常出现问题的所在,主要用于处理浏览器窗口与框架,浏览器特有的JS扩展也被默认为BOM的一部分,而各浏览器之间的公有对象就成了默认的标准。本篇文章将主要介绍window对象。
![](https://box.kancloud.cn/2016-02-17_56c43e6810513.jpg)
## 属性
世界上本没有模型,用的多了也就成了模型。模型便是一个可供参考的东西,BOM中的一系列通用的对象便构成了这个模型,其结构可展示为:![](https://box.kancloud.cn/2016-02-17_56c43e6849cbb.jpg)
window的六大属性,同时它们也是对象:
document主要操作web加载的网页文档;
frames为窗口框架对象数组;
history保存用户上网记录;
location提供加载的文档有关信息以及控制页面跳转;
navigator对象存储浏览器名称及版本信息;
screen显示屏幕相关信息。
其中document对象属性下也有几个重要的属性对象,以document为核心的对文档进行操作的各个对象组成的结构便是大家所熟悉的DOM,从这一点看来,DOM其实是BOM的一个子集.
window对象除了提供了旗下的六大对象属性外,还拥有设置浏览器信息的一些基本属性,主要如下
![](https://box.kancloud.cn/2016-02-17_56c43e68a7060.jpg)
我们经常需要过去浏览器的位置及大小信息,由于BOM没有统一的标准,针对不同浏览器会有不同的属性进行实现,这时候我们就需要做些跨浏览器的兼容性操作,使得针对不同浏览器都能够获取对象的数据。
通过使用typeof属性来判断浏览器是否支持对应的属性,进而采用不同的措施便是很好的兼容性操作的方法,以后可针对具体情况进行应用。
## 方法
window对象提供的几个主要方法如下图:
![](https://box.kancloud.cn/2016-02-17_56c43e6904d1f.jpg)
图中对方法进行了简单的分类,每个方法再往下分便是参数了,返回值依各自的情况不同而不同。见名知意,方法名也不例外,看到了这些方法的名称,其实际作用估计也已猜到了一半,在此便不再详细说明。
window对象也提供了另外的一些方法:focus()/blur()、对应open()的close()方法、scroll()滚动至指定像素点位置、print()/find()分别调出打印对话框以及查找对话框。
## 总结
BOM,实际上是一组对象的集合,而window是这组对象的核心,了解了它,对整个浏览器对象模型也就有了结构以及作用上的认识。