问题描述
使用addEventListener()可以同时为一个元素的相同事件同时绑定多个响应函数,但这个方法不支持IE8及以下的浏览器
在IE8中可以使用attachEvent()来绑定事件
核心代码
function bind(obj , eventStr , callback){
if(obj.addEventListener){
obj.addEventListener(eventStr , callback , false);
}else{
obj.attachEvent("on"+eventStr , function(){
callback.call(obj);
});
}
}
代码解疑
callback.call(obj);
addEventListener()中的this,是绑定事件的对象
而attachEvent()中的this,是window
需要统一两个方法this
在匿名函数中调用回调函数,使此时回调函数中的this切换成绑定事件的对象