BOM 是 各个浏览器厂商根据 DOM在各自浏览器上的实现:Window对象;Location对象;Navigator对象;Screen对象;History对象。
书摘&心得
BOM 是 各个浏览器厂商根据 DOM在各自浏览器上的实现。
1 window对象
- BOM代表浏览器对象模式,在web中使用javaScript,BOM无疑是真正的核心。
- BOM的核心对象是window,表示浏览器的一个实例。
- window对象既是通过javascript访问浏览器窗口的一个接口,又是ECMAScript规定的Global对象。
定义全局变量与在window对象上直接定义属性存在差别:
- 全局变量不能通过delete操作符删除,而直接在window对象上定义的属性可以。
尝试访问未声明变量会抛出错误,但是通过查询window对象可以知道某个可能未声明的变量是否存在。

1.1 框架frame
如果页面中包含框架,则每个框架都拥有自己的window对象,并保存在frames集合中。
- 每个window对象都有一个name属性,其中包含框架的名称
- 可以通过window.frames[0]或者window.frames[“name”]来引用框架
window对象的属性
通过window.screenLeft window.screenTop或者window.screenX window.screenY可以获得窗口相对于屏幕左边和上边的位置。
- 通过moveTo()和moveBy()可以将窗口精确移动到一个新的位置
- 这两个方法可能会被浏览器禁用。
- 不适用于框架,只能对最外层的window对象使用。
- document.documentElement.clientWidth和document.doculmentElement.clinetHeight中保存了页面的视口信息(IE6中有所不同)
- 跨浏览器确定窗口大小不简单,不同浏览器表现不同
- 使用resizeTo()和resizeBy()方法可以调整浏览器窗口的大小。
- 这两个方法可能会被浏览器禁用。
- 不适用于框架,只能对最外层的window对象使用。
使用window.open()方法既可以导航到一个特定url,也可以打开一个新的浏览器窗口
提供了当前窗口中加载的文档有关的信息。
- 既是window对象的属性,又是document对象的属性。
- location对象的用处不只表现在保存当前文档的信息,还表现在它将URL解析为独立的片段,让开发人员可通过不同的属性访问这些片段。
- search、query常用于路由跳转时页面间传值:
- 使用Location对象可以通过很多方式改变浏览器位置。
- 使用replace()方法用户不能回到前一个页面。
使用reload()可以重新加载当前显示的页面。
navigator对象的属性通常用于检测显示网页的浏览器类型
通过navigator.plugins数组可以检测浏览器插件
4 screen对象
screen对象只用来表明客户端的能力
- 常用于测定客户端能力的站点跟踪工具中
-
5 history对象
history对象保存着用户上网的历史记录。
- 使用go()方法可以在用户的历史记录中任意跳转。
- 可以使用back()和forward()来代替go()
- 可以通过history.length判断用户是否一开始就打开了你的页面。
- 每当url改变,就会生成一条历史记录,包括Url中hash的变化。
- 因此设置Location.hash会在浏览器中生成一条新的历史记录。