兼容各种浏览器的事件侦听方法(出自:慕课网 http://www.imooc.com/video/2138/0 DOM事件探秘):
需求:做事件侦听,兼容各种版本浏览器
coding:
<span style="white-space:pre"> </span>var eventUtil = {
//添加句柄
addHandler:function(element,type,handler){
if(element.addEventListener){//支持DOM2级的事件处理
element.addEventListener(type,handler,false)
}else if (element.attachEvent) {//IE的事件侦听
element.attachEvent("on"+type,handler);
}else{//更加底版本浏览器,采用Dom0级的事件侦听
element["on"+type] = handler;
};
},
//删除句柄
removeHandler:function(element,type,handler){
if(element.removeEventListener){//支持DOM2级的事件处理
element.removeEventListener(type,handler,false)
}else if (element.detachEvent) {//IE的事件侦听
element.detachEvent("on"+type,handler);
}else{//更加底版本浏览器,采用Dom0级的事件侦听
element["on"+type] = null;
};
}
}
//使用方法
var divD = document.getElementById("Div");
eventUtil.addHandler(divD,"click",showHello);
//eventUtil.removeHandler(divD,"click",showHello);
function showHello(){
alert("Hello!");
}
原理:不同浏览器对DOM事件的侦听方式不同,分为HTML形式(以上没涉及到),DOM0级,DOM2级;
注意:IE浏览器不支持DOM2级事件侦听,且事件书写时要 "on"+ ,默认为冒泡方式捕获;