否。老版本的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