記錄一下跨瀏覽器事件處理程序,我們都知道IE和Netscape 提出的事件流是相反的,IE是事件冒泡流,而Netscape 是事件捕獲流。導(dǎo)致一些老的瀏覽器的一些差異。為了兼容不同瀏覽器的事件對(duì)象,一般采用向下兼容的方式來處理,這里來記錄一下,寫法主要參考紅寶書。
const EventUtil = {
//添加事件綁定
addHandler: function (element, type, handler) {
if (element.addEventListener) {
element.addEventListener(type, handler, false);
} else if (element.attachEvent) {
element.attachEvent("on" + type, handler);
} else {
element["on" + type] = handler;
}
},
//移除事件綁定
removeHandler: function (element, type, handler) {
if (element.removeEventListener) {
element.removeEventListener(type, handler, false);
} else if (element.detachEvent) {
element.detachEvent("on" + type, handler);
} else {
element["on" + type] = null;
}
},
getEvent:function(event){
return event?event:window.envent
},
getTarget:function(event){
return event.target||event.srcElement
},
preventDefault:function(event){
if(event.preventDefault){
event.preventDefault()
}else{
event.returnValue=false
}
},
stopPropagation:function(event){
if(event.stopPropagation){
event.stopPropagation()
}else{
event.cancelBubble=true
}
}
};