关于火狐(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 相关文章推荐
Prototype最新版(1.5 rc2)使用指南(1)
Jan 10 Javascript
js 效率组装字符串 StringBuffer
Dec 23 Javascript
cument.execCommand()用法深入理解
Dec 04 Javascript
javascript:文字不间断向左移动的实例代码
Aug 08 Javascript
jQuery实现带玻璃流光质感的手风琴特效
Nov 20 Javascript
jQuery插件制作的实例教程
May 16 Javascript
Angular2使用Augury来调试Angular2程序
May 21 Javascript
浅谈关于angularJs中使用$.ajax的注意点
Aug 12 Javascript
IE9 elementUI文件上传的问题解决
Oct 17 Javascript
Vue中Table组件Select的勾选和取消勾选事件详解
Mar 19 Javascript
Vue CLI3创建项目部署到Tomcat 使用ngrok映射到外网
May 16 Javascript
新手快速入门JavaScript装饰者模式与AOP
Jun 24 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 xml-rpc远程调用
2008/12/19 PHP
PHP中文竖排转换实现方法
2015/10/23 PHP
完整显示当前日期和时间的JS代码
2007/09/17 Javascript
jquery 最简单的属性菜单
2009/10/08 Javascript
Google Maps API地图应用示例分享
2014/10/23 Javascript
ExtJs动态生成treepanel的Json格式
2015/07/19 Javascript
在Docker快速部署Node.js应用的详细步骤
2016/09/02 Javascript
angular基于路由控制ui-router实现系统权限控制
2016/09/27 Javascript
jQuery实现在新增加的元素上添加事件方法案例分析
2017/02/09 Javascript
详解AngularJS ui-sref的简单使用
2017/04/24 Javascript
JavaScript运动框架 解决防抖动问题、悬浮对联(二)
2017/05/17 Javascript
IScroll5实现下拉刷新上拉加载的功能实例
2017/08/11 Javascript
JS实现获取进今年第几天是周几的方法分析
2018/06/27 Javascript
vue 解决computed修改data数据的问题
2019/11/06 Javascript
详解element-ui 表单校验 Rules 配置 常用黑科技
2020/07/11 Javascript
js回到页面指定位置的三种方式
2020/12/17 Javascript
python中xrange用法分析
2015/04/15 Python
详解python调度框架APScheduler使用
2017/03/28 Python
插入排序_Python与PHP的实现版(推荐)
2017/05/11 Python
numpy中以文本的方式存储以及读取数据方法
2018/06/04 Python
Python数据可视化之画图
2019/01/15 Python
Python 微信爬虫完整实例【单线程与多线程】
2019/07/06 Python
OpenCV3.0+Python3.6实现特定颜色的物体追踪
2019/07/23 Python
使用 Python 写一个简易的抽奖程序
2019/12/08 Python
tensorflow之获取tensor的shape作为max_pool的ksize实例
2020/01/04 Python
解决pycharm不能自动补全第三方库的函数和属性问题
2020/03/12 Python
Python中zipfile压缩文件模块的基本使用教程
2020/06/14 Python
Django路由层URLconf作用及原理解析
2020/09/24 Python
Lookfantastic挪威官网:英国知名美妆购物网站
2017/07/26 全球购物
Vector, ArrayList, HashTable, HashMap哪些是线程安全的,哪些不是
2015/10/12 面试题
计算机网络毕业生自荐信
2013/10/01 职场文书
工程管理专业个人求职信范文
2013/12/07 职场文书
上班迟到检讨书
2014/01/10 职场文书
高校十八大报告感想
2014/01/27 职场文书
在校大学生才艺比赛策划书怎么写?
2019/08/26 职场文书
MySQL系列之一 MariaDB-server安装
2021/07/02 MySQL