动态设置事件

时间:2010-02-06 13:52:59

标签: javascript-events

我有这个函数,我调用onload:

function InitAll(){
   document.getElementById("div1").onmouseover = function(){Foo(event,this);};
   document.getElementById("div1").onmouseout  = function(){Foo(event,this);};
}

function Foo(e, handler){    
   document.getElementById("label1").innerHTML=e.type;
}

在IE中它可以工作,我得到了正确的e.type,但是在Firefox中它没有:

  

事件未定义

但如果我静态设置事件,例如:

<div id="div1" onmouseover="Foo(event,this);" onmouseout="Foo(event,this);" >

它适用于两种浏览器。

我错过了什么?某种关闭?

1 个答案:

答案 0 :(得分:2)

尝试将事件对象作为参数,并将其替换为window.event,如果它为null。

function InitAll(){
   document.getElementById("div1").onmouseover = function(e){
      e = e || window.event;
      Foo(e,this);
   };
 ...
}

但老实说,我会考虑使用jQuery或其他一些框架来实现这一切。在大多数情况下,重新发明轮子是没有意义的。在编写自己的框架时我可能会这样做,但在大多数情况下,您可以通过框架节省时间和麻烦。