这不是完全重复的。与假设的副本相比,请参阅下面的答案!
我的术语可能有点偏离,所以请随时纠正我。也许这就是为什么我似乎找不到任何相关的原因。请不要图书馆。
我有一个事件处理程序,它调用一个回调函数。花哨,对吧?在 IE<9this
中,处理程序中的对象是窗口。我不知道为什么,或者如何访问正确的对象。
if (document.addEventListener){
element.addEventListener(event, callback, false);
} else {
element.attachEvent('on' +event, callback);
}
这部分有效。
这部分没有:
function callback(event){
console.log(this);
}
this
在 IE 中正在返回,而它返回在每个其他浏览器[object Window]
中调用该函数的元素。callback
这从我的完整脚本中大大减少了,但这应该是相关的所有内容。
编辑
@metadings 提供的这个链接 How to reference the caller object ("this") using attachEvent非常接近。但是,仍然存在两个问题。
1)我需要同时获取event object
和DOM element
调用这个函数。
2) 该事件以委托方式处理:可能有子 DOM 元素触发该事件,这意味着event.target
不一定(在我的情况下,通常不是)具有侦听器的元素。