attachEvent与addEventListner,实现dom的上同一事件的多次绑定
我们有时候会在一个元素上添加多次同一事件,然而普通绑定会导致只执行最后一次
obj.onclick=method1;
obj.onclick=method2;
obj.onclick=method3;
只会执行method3
obj.attachEvent('onclick',method1);
obj.attachEvent('onclick',method2);
obj.attachEvent('onclick',method3);
执行顺序是method3,method2,method1
可惜,这是微软的私人方法
主流浏览器都支持W3C标准的addEventListener方法
obj.addEventListener('onclick',method1);
obj.addEventListener('onclick',method2);
obj.addEventListener('onclick',method3);
执行顺序是method1,method2,method3
因此,我们可以写个函数来做下兼容处理
function addHandleEvent(obj, type, func) {
if (obj.attachEvent) {
obj.attachEvent('on' + type, func);
return true;
} else if (obj.addEventListener) {
obj.addEventListener(type, func, false);
return true;
} else {
obj['on' + type] = func;
}
}
下边就可以安心的使用了:
obj.addHandleEvent(obj,'click',method1);
obj.addHandleEvent(obj,'click',method2);
obj.addHandleEvent(obj'click',method3);
网友评论