关于火狐(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 相关文章推荐
jquery tablesorter.js 支持中文表格排序改进
Dec 09 Javascript
一些mootools的学习资源
Feb 07 Javascript
js工具方法弹出蒙版
May 08 Javascript
Jquery easyui 下loaing效果示例代码
Aug 12 Javascript
使用 Node.js 做 Function Test实现方法
Oct 25 Javascript
AngularJS ng-controller 指令简单实例
Aug 01 Javascript
jQuery插件zTree实现更新根节点中第i个节点名称的方法示例
Mar 08 Javascript
小程序实现发表评论功能
Jul 06 Javascript
bootstrap模态框关闭后清除模态框的数据方法
Aug 10 Javascript
Vue开发Html5微信公众号的步骤
Apr 11 Javascript
vue-cli基础配置及webpack配置修改的完整步骤
Oct 20 Javascript
vue总线机制(bus)知识点详解
May 10 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 文本文章分页代码 按标记或长度(不涉及数据库)
2012/06/07 PHP
详解EventDispatcher事件分发组件
2016/12/25 PHP
php如何实现不借助IDE快速定位行数或者方法定义的文件和位置
2017/01/17 PHP
关于PHP转换超过2038年日期出错的问题解决
2017/06/28 PHP
PHP使用JpGraph绘制折线图操作示例【附源码下载】
2019/10/18 PHP
jQueryPad 实用的jQuery测试工具(支持IE,chrome,FF)
2010/05/22 Javascript
jquery判断字符输入个数(数字英文长度记为1,中文记为2,超过长度自动截取)
2010/10/15 Javascript
EXT窗口Window及对话框MessageBox
2011/01/27 Javascript
使用原生js写的一个简单slider
2014/04/29 Javascript
JS中使用Array函数shift和pop创建可忽略参数的例子
2014/05/28 Javascript
Seajs是什么及sea.js 由来,特点以及优势
2016/10/13 Javascript
javascript实现的图片预览功能
2017/03/25 Javascript
JS点击缩略图整屏居中放大图片效果
2017/07/04 Javascript
关于JS与jQuery中的文档加载问题
2017/08/22 jQuery
解决vue 项目引入字体图标报错、不显示等问题
2018/09/01 Javascript
详解如何在Javascript和Sass之间共享变量
2019/11/13 Javascript
JS script脚本中async和defer区别详解
2020/06/24 Javascript
Python实现保证只能运行一个脚本实例
2015/06/24 Python
Python+Opencv识别两张相似图片
2020/03/23 Python
Eclipse和PyDev搭建完美Python开发环境教程(Windows篇)
2016/11/16 Python
利用Python中的pandas库对cdn日志进行分析详解
2017/03/07 Python
pandas按若干个列的组合条件筛选数据的方法
2018/04/11 Python
python实现多线程网页下载器
2018/04/15 Python
python对象与json相互转换的方法
2019/05/07 Python
python3.7 sys模块的具体使用
2019/07/22 Python
Django+zTree构建组织架构树的方法
2019/08/21 Python
Python使用matplotlib绘制Logistic曲线操作示例
2019/11/28 Python
解决pycharm中导入自己写的.py函数出错问题
2020/02/12 Python
执行Python程序时模块报错问题
2020/03/26 Python
python re的findall和finditer的区别详解
2020/11/15 Python
Mio Skincare美国官网:身体紧致及孕期身体护理
2017/03/05 全球购物
GafasWorld哥伦比亚:网上购买眼镜
2017/11/28 全球购物
加拿大最大的钻石商店:Peoples Jewellers
2018/01/01 全球购物
考生诚信考试承诺书(2016版)
2016/03/25 职场文书
nginx优化的六点方法
2021/03/31 Servers
Mysql官方性能测试工具mysqlslap的使用简介
2021/05/21 MySQL