javascript事件--获取事件对象getEvent函数

分类: JS开发笔记 |
1、在JS开发中常常需要获取页面中的事件对象,然后来处理这些事件,因此,可以定义一个函数getEvent()来 获取:
return event ||
window.event;
if (window.event)
{
return window.event;
}
var func =
arguments.callee.caller;
do{
var eve=func.arguments[0];
if(eve&&(eve.constructor==event||eve.constructor==MouseEvent||eve.constructor==KeyboardEvent)){
return
eve;
}
}while(func=func.caller)
function getEvent(event) {
}
接下来就可以进行检验,当我们调用该函数时是否可以获取:
2、从1的运行来看,test函数带有参数,一般而言,该函数不会有参数,或不会有参数传入,那么,我们如何获取第一个参数呢?应当知道,函数的所有参数都存放在对象arguments中,因此我们可以通过arguments[0]来获取函数的第一个参数。值得注意的是,在IE浏览器中,event作为全局变量,通过window是可以直接引用到的,而在其他浏览器中,事件会作为第一个参数传入函数中,故接下来就可以这样更改getEvent函数:
结果:
3、我们知道arguments.callee是函数本身,在匿名函数中可以作为递归使用,那么arguments.callee.caller指的是调用本函数的上一级函数的函数。
例如getEvent的caller为test,test的caller为onclick,依次类推……
首先,可以检测window.event的值:
所以我们的getEvent函数最终可以这样来写:
function getEvent() {
}
调用:
结果:
前一篇:DOM扩展之专有扩展
后一篇:跨浏览器的事件处理程序