4.1 什么是BOM对象

在实际开发中,JavaScript经常需要操作浏览器窗口及窗口上的控件,实现用户和页面的动态交互。为此,浏览器提供了一系列内置对象,统称为浏览器对象;各内置对象之间按照某种层次组织起来的模型统称为BOM浏览器对象模型,如图4.1所示。

从图4.1中可以看出,window对象是BOM的顶层(核心)对象,其他的对象都是以属性的方式添加到window对象下,也可以称为window的子对象。例如,document对象(DOM)是window对象下面的一个属性,但是它同时也是一个对象。换句话说,document相对于window对象来说,是一个属性,而document相对于write()方法来说,是一个对象。

图4.1 BOM结构图

BOM为了访问和操作浏览器各组件,在每个window子对象中都提供了一系列的属性和方法。下面将对window子对象的功能进行介绍,具体内容如下:

BOM中的常用对象如下:

➢ window:浏览器窗口对象,其成员包括所有的全局变量、函数和对象。

➢ screen:屏幕对象,通常用于获取用户可用屏幕的宽和高,如屏幕的分辨率、坐标信息等。

➢ history:历史记录对象,其中包含了浏览器的浏览历史记录,也就是浏览网页的前进与后退功能。

➢ location:位置对象,用于获得当前页面的URL地址,还可以把浏览器重定向到新的指定页面。

➢ navigator:浏览器对象,通常用于获取用户浏览器的相关信息,也称为浏览器的嗅探器。

➢ document(文档对象):也称为DOM对象,是HTML页面当前窗体的内容,同时它也是JavaScript的重要组成部分之一,将会在下一章中详细讲解,本章只做概要介绍。

值得一提的是,BOM没有一个明确的规范,所以浏览器提供商通常会按照各自的想法随意去扩展BOM。而各浏览器间共有的对象就成为了事实上的标准。不过在利用BOM实现具体功能时要根据实际的开发情况考虑浏览器之间的兼容问题,否则会出现不可预料的情况。