BOM简介

日期:2014-08-04点击次数:9206

一、 什么是BOM?

BOM(Browser Object Model)即浏览器对象模型。使用BOM,开发者可以移动窗口,改变状态栏中的文本以及执行其他与页面内容不直接相关的动作。

二、 BOM定义主要对象

1) Window对象

该对象表示浏览器中打开的窗口。该对象提供的主要功能有以下五种:1、调整窗口大小和位置;2、打开新窗口;3、系统提示框;4、状态栏控制;5、定时操作。

2) Document对象

该对象表示浏览器中加载页面的文档对象。该对象实际上是Window对象的一个属性,它即属于BOM也属于DOM,但是由于BOM没有统一的规范,所以不浏览器的document的属性以及方法也不尽相同,大家在使用时尽量使用通用的属性与方法来确保浏览器的兼容性。

3) Location对象

该对象包含了浏览器当前的URL信息,例如:主机名、端口号、协议名等。

4) Navigator对象

该对象包含了浏览器本身的信息,例如:浏览器的类型、版本等。

5) Screen对象

该对象包含了客户端屏幕及渲染能力的信息,例如:屏幕的分辨率、宽、高等。

6) History对象

该对象包含了浏览器访问网页的历史信息,例如:浏览器历史记录条数、上一条URL、下一条URL等。

三、 BOM事件

1) 事件是如何产生的?

第一种情况,用户对网页做了某些操作,比如,点击一个按钮或链接,产生点击事件。
第二种情况,用户没有对网页做操作,也可能产生事件,比如浏览器已经将整个页面加载完毕,会产生加载完成事件。

2) 如何获得事件对象?

其中在IE和Chrome浏览器中可以使用window.event属性来获得事件对象;在Chrome和Firefox浏览器中可以使用句柄的第一参数来获得事件对象。下面提供一个获得事件对象的通用方法。
function test(){
var e = arguments.callee.caller.arguments[0] || window.event; 
//arguments.callee指的就是当前的函数体 
//arguments.callee.caller就是当前函数的上级函数 
//所以当执行onclick="test()"时arguments.callee就是test()
//arguments.callee.caller就是function onclick 
//onclick的第一个参数数就是event,也就是arguments.callee.caller.arguments[0]这个。 

<input type=”button” onclick=" test ()" value="testOnclick"/>

3) 什么是事件冒泡?

在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理程序,如果没有定义此事件处理程序或者事件返回true,那么这个事件会向这个对象的父级对象传播,从里到外,直至它被处理(父级对象所有同类事件都将被激活),或者它到达了对象层次的最顶层,即document对象(有些浏览器是window)。

4) 如何绑定事件

i. 绑定到元素属性上
例如用如下代码实现:
<input type=”button” onclick=" test ()" value="testOnclick"/>
ii. 绑定到对象属性上
例如用如下代码实现:
function doSomething(){
//代码
}
var obj = document.getElementById('a1'); 
obj.onclick= doSomething;//这里不要带(),否则会直接调用。
obj.onchange=function(){
doSmoething(参数);
}//或者这么绑定
iii. 调用attachEvent()或addEventListener()方法
var obj = document.getElementById('a1');
obj .attachEvent("eventName ", functionReference );
//IE11之前版本可用这种方法。eventName 参数的值是表示事件名称的字符串,比如 onmousedown;functionReference 参数是一个不带括号的函数引用,和早些时候描述的事件属性方法中一样。
 
obj .addEventListener("eventType", listenerReference, captureFlag);
//Chrome、IE11使用该方法。eventType是一个声明事件类型的字符串,比如click,mousedown等;listenerReference是一个不带括号的函数引用;captureFlag是一个 Boolean 值,指明该事件是否启用事件冒泡方式,一般为false。
 

 

软件部    李冰

姓名:
性别:
电话:
E-mail
问题:
问题描述: