关于火狐(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 相关文章推荐
多个checkbox被选中时如何判断是否有自己想要的
Sep 22 Javascript
jquery获取复选框checkbox的值实现方法
May 30 Javascript
Javascrip实现文字跳动特效
Nov 27 Javascript
微信小程序 PHP生成带参数二维码
Feb 21 Javascript
vue.js移动端app实战1:初始配置详解
Jul 24 Javascript
JS 实现banner图片轮播效果(鼠标事件)
Aug 04 Javascript
Angular2监听页面大小变化的解决方法
Oct 09 Javascript
JavaScript提升机制Hoisting详解
Oct 23 Javascript
在vue中利用全局路由钩子给url统一添加公共参数的例子
Nov 01 Javascript
vue 获取及修改store.js里的公共变量实例
Nov 06 Javascript
vue实现lodop打印功能的示例
Nov 11 Javascript
详细谈谈JavaScript中循环之间的差异
Aug 23 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实现的文件操作类及文件下载功能示例
2016/12/24 PHP
php 根据URL下载远程图片、压缩包、pdf等文件到本地
2019/07/26 PHP
JavaScript获取GridView中用户点击控件的行号,列号
2009/04/14 Javascript
在JavaScript并非所有的一切都是对象
2013/04/11 Javascript
PHP开发者必须掌握的6个关键字
2014/04/14 Javascript
使用jquery选择器如何获取父级元素、同级元素、子元素
2014/05/14 Javascript
抛弃Nginx使用nodejs做反向代理服务器
2014/07/17 NodeJs
JavaScript调用传递变量参数的相关问题及解决办法
2015/11/01 Javascript
confirm确认对话框的实现方法总结
2016/06/17 Javascript
浅谈js中的引用和复制(传值和传址)
2016/09/18 Javascript
JavaScript递归操作实例浅析
2016/10/31 Javascript
js中开关变量使用实例
2017/02/24 Javascript
Vue.Draggable实现拖拽效果
2020/07/29 Javascript
webpack打包后直接访问页面图片路径错误的解决方法
2017/06/17 Javascript
详解在不使用ssr的情况下解决Vue单页面SEO问题
2018/11/08 Javascript
Vue2.X和Vue3.0数据响应原理变化的区别
2019/11/07 Javascript
微信小程序scroll-view锚点链接滚动跳转功能
2019/12/12 Javascript
echarts 使用formatter 修改鼠标悬浮事件信息操作
2020/07/20 Javascript
[00:35]DOTA2上海特级锦标赛 EG战队宣传片
2016/03/04 DOTA
详解Python的Twisted框架中reactor事件管理器的用法
2016/05/25 Python
Python3.6安装及引入Requests库的实现方法
2018/01/24 Python
mvc框架打造笔记之wsgi协议的优缺点以及接口实现
2018/08/01 Python
Django中使用CORS实现跨域请求过程解析
2019/08/05 Python
python opencv 实现对图像边缘扩充
2020/01/19 Python
tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this T
2020/06/22 Python
python RSA加密的示例
2020/12/09 Python
详解基于canvas的视频遮罩插件
2018/01/04 HTML / CSS
美国最大的在线寄售和旧货店:Swap.com
2018/08/27 全球购物
门卫人员岗位职责
2013/12/24 职场文书
青年教师典范事迹材料
2014/01/31 职场文书
集体生日活动方案
2014/08/18 职场文书
夫妻分居协议书范文
2014/11/26 职场文书
2016年学习雷锋精神广播稿
2015/12/17 职场文书
Java数据开发辅助工具Docker与普通程序使用方法
2021/09/15 Java/Android
用 Python 定义 Schema 并生成 Parquet 文件详情
2021/09/25 Python
CSS浮动引起的高度塌陷问题
2022/08/05 HTML / CSS