Js获取事件对象代码


Posted in Javascript onAugust 05, 2010

一般做法:

<input type="button" id="test" value="点我测试" /> 
<script type="text/javascript"> 
var testBtn = document.getElementById('test'); 
testBtn.onclick = testFun; 
function testFun(e) 
{ 
var evt = e || window.event; 
alert(evt); 
} 
</script>

或者:
<input type="button" id="test" value="点我测试" /> 
<script type="text/javascript"> 
var testBtn = document.getElementById('test'); 
if(window.addEventListener) 
{ 
testBtn.addEventListener('click', testFun, false); 
} 
else if(window.attachEvent) 
{ 
testBtn.attachEvent('onclick', testFun); 
} 
function testFun(e) 
{ 
var evt = e || window.event; 
alert(evt); 
} 
</script>

返回的值都是 “[object Event]“。
但如果是这种方式呢?
<input type="button" id="test_1" value="点我测试" onclick="testFun_1()" /> 
<script type="text/javascript"> 
function testFun_1() 
{ 
//此处如何获得? 
} 
</script>

“内事不决问百度,外事不决问谷歌”, 此言不虚。搜索了下,答案还真不少,不过大多数雷同(可能是巧合)。
https://3water.com/article/19408.htm
http://www.cnblogs.com/cuixiping/archive/2008/04/13/1150847.html
愚公 的这个文章(貌似转帖)还是颇有见解的。
<input type="button" id="test_1" value="点我测试" onclick="testFun_1()" /> 
<script type="text/javascript"> 
function testFun_1() 
{ 
var evt = getEvent(); 
alert(evt); 
} 
function getEvent(){ 
if(window.event) return window.event; //这里用对象检测更为妥当 
func=getEvent.caller; 
while(func!=null){ 
var arg0=func.arguments[0]; 
if(arg0){ 
if((arg0.constructor==Event || arg0.constructor ==MouseEvent) 
|| (typeof(arg0)=="object" && arg0.preventDefault && arg0.stopPropagation)){ 
return arg0; 
} 
} 
func=func.caller; 
} 
return null; 
} 
</script>

一般来说,很少用到这种嵌入式的写法(js写在html标签中 onclick="testFun_1()"),也不推荐使用这种方法,会造成维护和开发的麻烦。
Javascript 相关文章推荐
javascript 强制刷新页面的实现代码
Dec 13 Javascript
javascript 嵌套的函数(作用域链)
Mar 15 Javascript
JQuery设置和去除disabled属性的5种方法总结
May 16 Javascript
jquery获取css中的选择器(实例讲解)
Dec 02 Javascript
jquery插件corner实现圆角边框的方法
Mar 09 Javascript
Document.body.scrollTop的值总为零的快速解决办法
Jun 09 Javascript
基于d3.js实现实时刷新的折线图
Aug 03 Javascript
jquery实现全选、不选、反选的两种方法
Sep 06 Javascript
Bootstrap源码解读导航条(7)
Dec 23 Javascript
Makefile/cmake/node-gyp中区分判断不同平台的方法
Dec 18 Javascript
在 Vue 应用中使用 Netlify 表单功能的方法详解
Jun 03 Javascript
webpack 最佳配置指北(推荐)
Jan 07 Javascript
zeroclipboard复制到剪切板的flash
Aug 04 #Javascript
jQuery Study Notes学习笔记 (二)
Aug 04 #Javascript
JQuery Study Notes 学习笔记(一)
Aug 04 #Javascript
jQuery dialog 异步调用ashx,webservice数据的代码
Aug 03 #Javascript
基于jquery的让textarea自适应高度的插件
Aug 03 #Javascript
jQuery的实现原理的模拟代码 -4 重要的扩展函数 extend
Aug 03 #Javascript
jQuery的实现原理的模拟代码 -3 事件处理
Aug 03 #Javascript
You might like
PHP递归算法的详细示例分析
2013/02/19 PHP
zf框架的校验器使用使用示例(自定义校验器和校验器链)
2014/03/13 PHP
PHP实现微信支付(jsapi支付)流程步骤详解
2018/03/15 PHP
Jquery Ajax学习实例6 向WebService发出请求,返回DataSet(XML) 异步调用
2010/03/18 Javascript
JavaScript 学习笔记二 字符串拼接
2010/03/28 Javascript
js css后面所带参数含义介绍
2013/08/18 Javascript
纯JS实现根据CSS的class选择DOM
2014/03/22 Javascript
jQuery事件绑定和委托实例
2014/11/25 Javascript
zepto.js中tap事件阻止冒泡的实现方法
2015/02/12 Javascript
JavaScript中Null与Undefined的区别解析
2015/06/30 Javascript
原生JS实现图片轮播与淡入效果的简单实例
2016/08/21 Javascript
jQuery EasyUI tree 使用拖拽时遇到的错误小结
2016/10/10 Javascript
基于jQuery和Bootstrap框架实现仿知乎前端动态列表效果
2016/11/09 Javascript
vue使用watch 观察路由变化,重新获取内容
2017/03/08 Javascript
Webpack如何引入bootstrap的方法
2017/06/17 Javascript
jquery弹窗时禁止body滚动条滚动的例子
2019/09/21 jQuery
JQuery事件委托(适用于给动态生成的脚本元素添加事件)
2020/02/01 jQuery
详解Node.JS模块 process
2020/08/31 Javascript
[03:55]2014DOTA2国际邀请赛 Fnatic经理采访赢DK在情理之中
2014/07/10 DOTA
[05:15]2018年度CS GO社区贡献奖-完美盛典
2018/12/16 DOTA
[01:07:11]Secret vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
pycharm运行和调试不显示结果的解决方法
2018/11/30 Python
Python根据欧拉角求旋转矩阵的实例
2019/01/28 Python
浅析PyTorch中nn.Module的使用
2019/08/18 Python
python十进制转二进制的详解
2020/02/07 Python
python列表返回重复数据的下标
2020/02/10 Python
Iconfont(矢量图标)+iconmoon(图标svg互转)配合javascript实现社交分享系统
2020/04/21 Python
Python3+SQLAlchemy+Sqlite3实现ORM教程
2021/02/16 Python
Currentbody美国/加拿大:美容仪专家
2020/03/09 全球购物
挖掘机司机岗位职责
2014/02/12 职场文书
优秀教师感人事迹材料
2014/05/04 职场文书
大学生学习计划书
2014/09/15 职场文书
2014党的群众路线教育实践活动总结报告
2014/10/31 职场文书
继承公证书格式
2015/01/26 职场文书
XX部保密工作制度范本
2019/08/27 职场文书
详解RedisTemplate下Redis分布式锁引发的系列问题
2021/04/27 Redis