<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title> event对象浏览器兼容性写法</title>
</head>
<body>
<a href="http://www.baidu.com" id="a">点击我</a>
<div id="parent">
<div id="child">我是孩子</div>
</div>
<ul id="ul">
<li>第1个</li>
<li>第2个</li>
<li>第3个</li>
</ul>
<script type="text/javascript">
//ie9以上,chrome,firefox,等其他浏览器 addEventListener removeEventListener target stopPropragation preventDefault
//ie8以及ie8一下的浏览器 attachEvent detachEvent srcElement cancelBubble returnValue
var 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);
}else if(element.detachEvent){
element.detachEvent("on"+type,handler)
}else{
element["on"+type] = handler ;
}
},
//阻止浏览器执行默认事件的动作
preventDefault:function(event){
if(event.preventDefault){
event.preventDefault()
}else{
event.returnValue=false;
}
},
//事件源
getTarget:function(event){
return event.target||event.srcElement;
},
//对于是事件keypress,也需要区分浏览器
getCharCode:function (event) {
if(typeof event.charCode=="number"){
return event.charCode;
}else{
return event.keyCode;
}
},
//停止事件进一步起泡到包含层次的元素
stopPropagation:function(event){
if(event.stopPropagation){
event.stopPropagation();
}else{
event.cancelBubble=true;
}
}
}
//获取元素
var a =document.getElementById("a")
//阻止浏览器执行默认事件
EventUtil.addHandler(a,"click",function(event){
EventUtil.preventDefault(event);
});
//测试阻止冒泡行为
var child=document.getElementById("child");
var parent=document.getElementById("parent");
EventUtil.addHandler(child,"click",function(event){
//停止事件进一步起泡到包含层次的元素
alert("我是孩子节点");
EventUtil.stopPropagation(event);
});
EventUtil.addHandler(parent,"click",function(){
alert("我是父亲元素");
});
//测试获取事件源
var ul=document.getElementById("ul");
EventUtil.addHandler(ul,"click",function(event){
console.log(EventUtil.getTarget(event));
});
</script>
</body>
</html>