关于火狐(firefox)及ie下event获取的两种方法


Posted in Javascript onDecember 27, 2012

经常有同事问我在火狐浏览器怎么获取event的方法,大多是想获取event.keyCode的功能两种方法
第一种方法

function a(e){ 
e=e||window.event; 
alert(e.keyCode); 
}

ie浏览器如下调用
<body onclick="a()">

firefox火狐浏览器如下调用
<body onclick="a(event)">

这样就可以调用成功
这种方法在firefox需要带个参数过去,不是太好,下面介绍第二种方法
第二种方法
function a(){ 
e=arguments.callee.caller.arguments[0] || window.event; 
alert(e.keyCode); 
}

ie和firefox下都如下调用
<body onclick="a()">

这里要解释一下arguments.callee.caller.arguments[0],
简单例子如下:
function a(){ 
b(); 
} 
function b(){ 
alert(b === arguments.callee) 
alert(b.caller === a) 
alert(arguments.callee.caller === a) 
} 
a();

上面的这个例子将输出3个true,表明当a()调用时,函数b与函数a的关系。
arguments.callee指的就是当前的函数体
arguments.callee.caller就是当前函数的上级函数
所以当执行onclick="a()"时arguments.callee就是a(),arguments.callee.caller就是function onclick
onclick的第一个能数就是event,也就是arguments.callee.caller.arguments[0]这个。
Javascript 相关文章推荐
javascript中的变量是传值还是传址的?
Apr 19 Javascript
jQuery的deferred对象使用详解
Aug 20 Javascript
使用JavaScript动态设置样式实现代码(2)
Jan 25 Javascript
直接在JS里创建JSON数据然后遍历使用
Jul 25 Javascript
优化Node.js Web应用运行速度的10个技巧
Sep 03 Javascript
jQuery学习笔记之基础中的基础
Jan 19 Javascript
Javascript的表单验证长度
Mar 16 Javascript
canvas滤镜效果实现代码
Feb 06 Javascript
jQuery中的on与bind绑定事件区别实例详解
Feb 28 Javascript
JavaScript创建对象的七种方式全面总结
Aug 21 Javascript
Angular2+国际化方案(ngx-translate)的示例代码
Aug 23 Javascript
vue多次循环操作示例
Feb 08 Javascript
Javascript图像处理—为矩阵添加常用方法
Dec 27 #Javascript
ie支持function.bind()方法实现代码
Dec 27 #Javascript
前后台交互过程中json格式如何解析以及如何生成
Dec 26 #Javascript
多个js与css文件的合并方法详细说明
Dec 26 #Javascript
JS打开图片另存为对话框实现代码
Dec 26 #Javascript
window.addEventListener来解决让一个js事件执行多个函数
Dec 26 #Javascript
js动态添加onload、onresize、onscroll事件(另类方法)
Dec 26 #Javascript
You might like
PHP上传文件时自动分配路径的方法
2015/01/09 PHP
php递归遍历多维数组的方法
2015/04/18 PHP
thinkphp中的url跳转用法分析
2016/07/12 PHP
利用php的ob缓存机制实现页面静态化方法
2017/07/09 PHP
又一个图片自动缩小的JS代码
2007/03/10 Javascript
IE之动态添加DOM节点触发window.resize事件
2010/07/27 Javascript
Jquery 的扩展方法总结
2011/10/01 Javascript
关于jQuery参考实例 1.0 jQuery的哲学
2013/04/07 Javascript
JS文本框默认值处理详解
2013/07/10 Javascript
angularjs中回车键触发某一事件的方法
2017/04/24 Javascript
详解vue中引入stylus及报错解决方法
2017/09/22 Javascript
JavaScript实现删除数组重复元素的5种常用高效算法总结
2018/01/18 Javascript
fullpage.js最后一屏滚动方式
2018/02/06 Javascript
优雅的处理vue项目异常实战记录
2019/06/05 Javascript
在vue项目中使用codemirror插件实现代码编辑器功能
2019/08/27 Javascript
layui导出所有数据的例子
2019/09/10 Javascript
微信小程序实现横向滚动导航栏效果
2019/12/12 Javascript
利用vue3+ts实现管理后台(增删改查)
2020/10/30 Javascript
Python map和reduce函数用法示例
2015/02/26 Python
分析Python的Django框架的运行方式及处理流程
2015/04/08 Python
Python实现判断并移除列表指定位置元素的方法
2018/04/13 Python
解决Python中list里的中文输出到html模板里的问题
2018/12/17 Python
使用python serial 获取所有的串口名称的实例
2019/07/02 Python
python实现知乎高颜值图片爬取
2019/08/12 Python
解决Pycharm 包已经下载,但是运行代码提示找不到模块的问题
2019/08/31 Python
浅析Python3 pip换源问题
2020/01/06 Python
用Python做一个久坐提醒小助手的示例代码
2020/02/10 Python
使用CSS3的背景渐变Text Gradient 创建文字颜色渐变
2014/08/19 HTML / CSS
html Table 表头固定的实现
2019/01/22 HTML / CSS
KIKO美国官网:意大利的平价彩妆品牌
2017/05/16 全球购物
应届大学生简历中的自我评价
2014/01/15 职场文书
2014高考励志标语
2014/06/05 职场文书
假释思想汇报范文
2014/10/11 职场文书
导游词之平津战役纪念馆
2019/11/04 职场文书
vscode中使用npm安装babel的方法
2021/08/02 Javascript
Java 数组的使用
2022/05/11 Java/Android