我有这个函数,我调用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);" >
它适用于两种浏览器。
我错过了什么?某种关闭?
答案 0 :(得分:2)
尝试将事件对象作为参数,并将其替换为window.event,如果它为null。
function InitAll(){
document.getElementById("div1").onmouseover = function(e){
e = e || window.event;
Foo(e,this);
};
...
}
但老实说,我会考虑使用jQuery或其他一些框架来实现这一切。在大多数情况下,重新发明轮子是没有意义的。在编写自己的框架时我可能会这样做,但在大多数情况下,您可以通过框架节省时间和麻烦。