您现在的位置:首页 --> JavaScript --> javascript事件:获取事件对象getEvent函数
javascript事件:获取事件对象getEvent函数
浏览:2712次 出处信息
在javascript开发中我们会经常获取页面中的事件对象,然后来处理这些事件,例如下面的getEvent函数就是获取javascript下的页面事件对象。
function getEvent(event){
return event || window.event;
}我们使用getEvent的时候可以这样调用。
function foo(event){
var evt = getEvent(event);
alert(evt);
}并且把foo函数绑定到一个onclick事件上。
但是常用的是foo函数不会有参数,或者第一个参数没有传入,我们可以通过arguments[0]来获取第一个参数。
在IE中event是一个全局变量,即window.event,而在Firefox等浏览器,事件会作为第一个参数传入foo函数,所以getEvent可以改为:
function getEvent(event){
return arguments[0] || window.event;
}这时在一些版本的浏览器,例如Firefox 中会出现获取不到event对象的问题,其实我们可以看成事件的触发是下面的方式:
function onclick(event) {
foo();
}这样,第一个函数是onclick,即event会默认作为第一个参数传入,而foo函数没有将event作为参数传入,这样严重限制了getEvent的灵活性,所以我们需要修改下getEvent函数。
我们知道arguments.callee是函数本身,在匿名函数中可以作为递归使用,那么arguments.callee.caller指的是调用本函数的上一级函数的函数。
例如getEvent的caller为foo,foo的caller为onclick,依次类推……
所以我们的getEvent函数最终可以这样来写:
function getEvent(){
if(window.event){
return window.event;
}
var f = arguments.callee.caller;
do{
var e = f.arguments[0];
if(e && (e.constructor === Event || e.constructor===MouseEvent || e.constructor===KeyboardEvent)){
return e;
}
}while(f=f.caller);
}建议继续学习:
- Js事件监听封装(支持匿名函数) (阅读:4473)
- jQuery事件编写进阶 (阅读:3902)
- jQuery事件的冒泡过程 (阅读:3608)
- js中鼠标滚轮事件详解 (阅读:3036)
- 关于Javascript的俩个有趣的探讨 (阅读:2974)
- 基于事件的社会化网站 (阅读:2557)
- 一种生成事件脉络的方法 (阅读:2292)
- C#的设计缺陷(1):显式实现接口内的事件 (阅读:1955)
- 使用jquery卸载全部事件 (阅读:1565)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:页面DOM加载顺序和用户视觉浏览顺序的一致性
后一篇:解决jQuery动画在chrome下暴走的问题 >>
文章信息
- 作者:断桥残雪 来源: 断桥残雪部落格
- 标签: getEvent 事件
- 发布时间:2011-07-15 00:03:45
建议继续学习
近3天十大热文
-
[927] WordPress插件开发 -- 在插件使用 -
[133] 解决 nginx 反向代理网页首尾出现神秘字 -
[52] 如何保证一个程序在单台服务器上只有唯一实例( -
[52] 整理了一份招PHP高级工程师的面试题 -
[50] 全站换域名时利用nginx和javascri -
[50] 海量小文件存储 -
[50] 用 Jquery 模拟 select -
[49] CloudSMS:免费匿名的云短信 -
[48] Innodb分表太多或者表分区太多,会导致内 -
[47] jQuery性能优化指南
