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) | 浏览 (7503)

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


评论

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

1

添加评论

昵称:


博主


« 2020年-12月 »
29 30 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 31 1 2

分类


热门标签


最近留言


概要

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

友情链接