在 JS 中事件函数的参数 event 是默认的对不对;我们一般做兼容的时候 会这样写 :
var event=event||window.event;
但是 但是有时在点击 事件函数 object.onclick=function(e){}; 这个 e 就是指 event 吗,是因为兼容问题吗?如果可以请详细 事件对象 这个问题!俯首拜谢!
这里的e是形参,实参就是window.event,理解形参和实参就能懂了
event
其实就是形参。
所以,你的代码应该这样写:
object.onclick = function(e){
var event = e || window.event;
// 从此往后的代码,event 就是事件
};
原谅我不会 PS。
在 1 中,这两个 e
是同一个。
在 3 中,window.event
是 IE 使用的。默认把 event 对象作为,当任何事件发生时,通过一个全局变量 event
传递事件。
IE6/7/8只支持
window.event
不支持参数传入。Firefox 只支持参数传入不支持其它方式。
IE9/Opera/Safari/Chrome 两种方式都支持。
在 2 中,event
是你定义的变量。不管上面使用了何种方式,现在这个 event
变量保存了事件的对象。
在你的提问中,这段代码:
var event = event || window.event;
在你的代码中,这 3 个 event
,虽然名字一样,但是他们完全不相同。
第一个是临时变量,第二个是形参,第三个是 window
的一个事件属性。
不知道是不是那个对象?
怎么半?
obj.onclick=function(e){
alert(e===(window.event||event))
}
还不行?
for(ev in e)
for (ev in window.event||event)
动一下手,记忆更深刻~