博主


« 2017年-06月 »
28 29 30 31 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 1

分类


热门标签


最新评论


最近留言


最近访客


概要

  • 文章数量: 41
  • 分类数量: 9
  • 标签数量: 73
  • 评论数量: 159
  • 浏览次数: 2934904

友情链接

addEventListener 传递 event 参数

作者: 我不是鱼 (2009-03-02 17:23)分类: Javascript   标签: firefox event

在IE下可以直接用window.event。但FireFox并没有 window.event 。如果要得到 event 对象,就必须要声明时间处理函数的一个参数为 event 。

JavaScript代码
  1. <script type="text/javascript">   
  2. function fun1(e){   
  3.     var ev = window.event || e;   
  4.     alert(ev);   
  5. }   
  6. </script>   
  7.   
  8. <input type="button" id="bt" value="Click me" onclick="fun1(event);" />  

这个例子在ie和Firefox都是可以通过的。

但我们用到addEventListener来绑定事件又如何传递event呢。按照上面的方法

JavaScript代码
  1. <script type="text/javascript">   
  2. function fun1(e){   
  3.     var ev = window.event || e;   
  4.     alert(ev);   
  5. }   
  6.   
  7. function addEvent(el, evname, func) {   
  8.     if (el.attachEvent) {   
  9.         el.attachEvent("on" + evname, func);   
  10.     }    
  11.     else if (el.addEventListener){   
  12.         el.addEventListener(evname, func, true);   
  13.     }   
  14. };   
  15.   
  16. window.onload = function(){   
  17.     addEvent(document.getElementById('bt'), 'click'function(){   
  18.         fun1(event);   
  19.     });   
  20. }   
  21. </script>   
  22.   
  23. <input type="button" id="bt" value="Click me" />  

这个例子在firefox下event为undefined。

经测试发现函数
function(){
  fun1(event);
}
虽然没有带参数, 但arguments.length却是为1。arguments[0]正是我们要的event。
下面这个例子在ie和Firefox都可以通过

JavaScript代码
  1. <script type="text/javascript">   
  2. function fun1(e){   
  3.     var ev = window.event || e;   
  4.     alert(ev);   
  5. }   
  6.   
  7. function addEvent(el, evname, func) {   
  8.     if (el.attachEvent) {   
  9.         el.attachEvent("on" + evname, func);   
  10.     }    
  11.     else if (el.addEventListener){   
  12.         el.addEventListener(evname, func, true);   
  13.     }   
  14. };   
  15.   
  16. window.onload = function(){   
  17.     addEvent(document.getElementById('bt'), 'click'function(){   
  18.         fun1(arguments[0]);   
  19.     });   
  20. }   
  21. </script>   
  22.   
  23. <input type="button" id="bt" value="Click me" />  

评论 (3) | 浏览 (7724)

前一篇: HTML 中的 meta
后一篇: htmlarea编辑器redo 和 undo 在ie下没反应的解决方法


评论

safefwe
[游客]qwer 2009-05-31 11:47

http://www.100sucai.com/code/290.html
[游客]神话 2014-08-18 11:01

征稿函
     ——微波功率和电磁能量特别分会(SCI检索)

Special Track STMPEE of EICE2014
(International Conference on Electrical, Instrumentation and Control Engineering)


组委会邮箱:eice-conf@hotmail.com

出版信息:
本会议所有录用的文章将由SCI期刊the Journal of Microwave Power and Electromagnetic Energy (JMPEE) 出版,欢迎投稿。

征稿领域:
微波功率;电磁能量;医学影像,无线传感器网络等

投稿要求:
本次会议仅接受系统投稿,初稿暂时不做格式要求,英文稿件,谢谢。

会议网站:http://www.eice-conf.org/track.aspx

投稿系统:  www.eice-conf.org/stmpee-papersub/Author/Login.aspx


重要日期:        
截稿日期: 2015年4月10日

本次会议论文仅在期刊上出版,不会再安排作者到会场交流!
index001 2015-04-07 09:25

1

添加评论

登陆 注册  昵称: