IE event callback object JavaScript
Posted
by
Randy Hall
on Stack Overflow
See other posts from Stack Overflow
or by Randy Hall
Published on 2012-11-20T15:50:43Z
Indexed on
2012/11/20
17:00 UTC
Read the original article
Hit count: 303
I may be WAY off on my terminology, so please feel free to correct me. Perhaps this is why I cannot seem to find anything relevant. No libraries, please.
I have an event handler, which invokes a callback function. Fancy, right? In IE<9 the this
object in the handler is the window. I don't know why, or how to access the correct object.
if (document.addEventListener){
element.addEventListener(event, callback, false);
} else {
element.attachEvent('on' +event, callback);
}
This part DOES WORK.
This part doesn't:
function callback(event){
console.log(this);
}
this
in IE is returning [object Window]
, whereas it returns the element that called the callback
function in every other browser. This is cut down significantly from my full script, but this should be everything that's relevant.
EDIT
This link provided by @metadings How to reference the caller object ("this") using attachEvent is very close. However, there are still two issues.
1) I need to get both the event object
and the DOM element
calling this function.
2) This event is handled delegation style: there may be child DOM elements firing the event, meaning event.target
is not necessarily (and in my case, not typically) the element with the listener.
© Stack Overflow or respective owner