日期:2014-05-16  浏览次数:20531 次

笔记:JS权威指南17章—事件和事件属性

目前使用的3中完全不同的不兼容的事件处理模型:
1.原始事件模型:通常非正式把它看作0级DOM API的一部分内容。尽管它的特性有限,但所有启用Javascript的浏览器都支持它,因此具有可移植性。
2.标准事件模型:2级DOM标准对它进行了标准化,除IE外的所有浏览器都支持他。
3.Internet Explorer事件模型:最初由IE4引入。具有标准事件模型的许多高级特性,但不具有全部特性。

把一个元素设置为多个文档元素的事件句柄:

//在链接前请求用户的确认
function confirmLink() {
	return confirm("您确认要访问“ + this.href + ” 吗?");
}
function confirmAllLinks() {
	for(var i = 0; i < document.links.length; i++) {
		document.links[i].onclick = confirmLink;
	}
}



假定对象o,具有mymethod方法,可以用下面代码注册一个事件句柄

button.onclick = o.mymethod


这个语句使button.onclick引用与o.mymethod相同的函数。现在这个函数既是o的方法,也是button的方法。当浏览器触发这个事件句柄时,它将把该函数作为button对象的方法调用,而不是作为o对象的方法调用。关键字this引用Button对象,而不是引用对象o。不要认为可以让浏览器把一个事件句柄作为其他对象的方法调用。如果想这样做,必须直接调用

button.onclick = function() { o.mymethod(); }

?

?

?

列表显示了所有事件模块、以及它定义的事件接口和它支持的事件类型。

模块名

事件接口

事件类型

HTMLEvents

Event

abort 、 blur 、 change 、 erro 、 focus 、 load 、 resrt 、 resize 、 scroll 、 select 、 submit 、 unload

MouseEvents

MouseEvents

click 、 mousedown 、 mousemove 、 mouseover 、 mouseup

UIEvents

UIEvent

DOMActivate 、 DOMFocusln 、 DOMFocusOut

Event : HTMLEvent 模块定义的事件类型使用 Event 接口。其他事件类型都使用该接口,即所有事件对象都实现了 Event 接口,并提供了适用于所有事件类型的详细信息。 Event 接口定义了如下属性:

type