При использовании attachEvent
в IE this
устанавливается для объекта window
, а не для объекта, на котором произошло событие.
В IE глобальная переменная window.event.srcElement
будет содержатьцелевой объект для события.
Вы можете закодировать обходной путь, как этот, чтобы заставить все обработчики событий работать одинаково:
function hookEvent(event, obj, fn) {
if (obj.addEventListener) {
obj.addEventListener(event, fn, false);
} else {
obj.attachEvent("on" + event, function() {return(fn.call(obj, window.event));});
}
}
Это сделает так, чтобы this
устанавливается в качестве исходного объекта события, а аргумент обработчика события является объектом события.