IE中的事件注册:
ele.attachEvent('on' + type, fnHandler)
,W3C中事件注册:
ele.addEventListener(type, fnHandler, false)
,有时我们要在事件注册的函数引用(这里是fnHandler)里,引用调用该事件监听器的当前对象(这里是ele),
如果是W3C可以直接用this,形如:
function fnHandler(){
console.log(this);
}
fnHandler中的this就相当于ele了。
但是在IE中是不行的。兼容的获取目标对象的方法是:
function fnHandler(e){
var target = e.target || e.srcElement;
console.log(target);
}
这时fnHandler中的target就相当于ele
PS:上文黑色加粗说法错误,使用
var target = e.target || e.srcElement;
target不是相当于ele,而是实际点击的元素。如果给父元素使用
addEventListener
点击子元素,那么
var target = e.target || e.srcElement;
得到的不是父元素,而是子元素