否。老版本的Windows不会将事件参数传递给事件处理程序。它们在全局变量window.event
中,目标是.srcElement
。除了那个例外,你应该总是得到一个事件结构。
用于旧版本IE的解决办法是这样的:
function(e) {
if (!e) {
e = window.event;
e.target = e.srcElement;
}
// code that uses e here
}
但是,通常情况下,这是在通过使用安装事件处理功能更高层面上加以解决。例如:
// add event cross browser
function addEvent(elem, event, fn) {
if (elem.addEventListener) {
elem.addEventListener(event, fn, false);
} else {
elem.attachEvent("on" + event, function() {
// set the this pointer same as addEventListener when fn is called
window.event.target = window.event.srcElement;
return(fn.call(elem, window.event));
});
}
}
感谢您的详细回答:3 – Jazzepi 2013-03-04 18:44:23