Function.bindAsEventListener - Prototype JavaScript 框架

Xunxin Prototype API

bindAsEventListener

bindAsEventListener(thisObj[, arg...]) -> Function

一个专用于事件的 bind 方法的变体, 它确保事件触发后会将当前事件对象作为第一个参数传递给事件处理函数。

如果你不清楚“绑定”是什么,请查阅 Function 概述。如果你不是非常明白 bind() 能够做什么,请查阅它的文档。

假如创建一个用于事件处理的函数,你需要以某种方式获取当前的事件对象,同时还要控制函数运行时所在的 上下文,该怎么办?bindAsEventListener 都为你考虑到了,它将事件处理函数绑定到指定的上下文 (thisObj),并且确保当事件发生时,事件对象会传递到事件处理函数。

对于仅实现了 DOM Level 0 事件处理方式的 MSIE,事件对象 不是 作为事件处理程序的第一个参数来传递的, 而是使用一个全局的 window.event 代替。但是这个方法仍然可以正常使用。该方法让你能够忽略浏览器间的差异, 不用再通过手动编码来处理这些问题。

这个方法的典型应用是协助 Event.observe,在任何你需要的地方设置方法作为事件侦听器。

样例

这里有一个统一的例子:

var obj = { name: 'A nice demo' }; 
function handler(e) { 
	var tag = Event.element(e).tagName.toLowerCase(); 
	var data = $A(arguments); 
	data.shift();
	alert(this.name + '\nClick on a ' + tag + '\nOther args: ' + data.join(', ')); 
}

Event.observe(window, 'load', function(){
	Event.observe(document.body, 'click', handler.bindAsEventListener(obj, 1, 2, 3));
	// 现在,页面上的任意点击都会显示 obj.name、所点击元素的小写的标签名称以及 "1, 2, 3" 
})