E和其他浏览器事件对象区别
IE8浏览器处理event兼容,取window.event
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<script src="event.js"></script><!--封装一个DOM0,DOM2,IE事件-->
<script src="script.js"></script><!--封装一个DOM,IE的event事件对象-->
<body>
<div id="box">
<input type="button" value="HTML事件" id="btn" onclick="showMes()">
<input type="button" value="DOM0事件" id="btn2">
<input type="button" value="DOM2事件" id="btn3">
<input type="button" value="IE事件" id="btn4">
<a href="26.html" id="go">跳转</a>
</div>
<script type="text/javascript">
</script>
</body>
</html>
window.onload=function(){
var go=document.getElementById("go"),
box=document.getElementById("box");
eventutil.addhandler(box,'click',function(){
alert("我是整个父盒子");
});
eventutil.addhandler(go,'click',function(e){
e=eventutil.getEvent(e);
//e=e || window.event;
alert(eventutil.getElement(e).nodeName);
eventutil.preventDefault(e);
eventutil.stopPropagation(e);
});
}
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,false);
}else if(element.detachEvent){
element.detachEvent('on'+type,handler);
}else{
element['on'+type]=handler;
}
},
//获取事件
getEvent:function(event){
return event?event:window.event;
},
//获取类型(虽然类型不存在IE非IE)
getType:function(event){
return event.type;
},
//获取事件目标
getElement: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;
}
}
}
type 事件属性 target 事件目标 stopPropagation() 阻止事件冒泡 preventDefalut() 阻止事件默认行为
IE中 阻止事件冒泡和阻止事件默认行为都是 属性,不是方法
IE 和其他浏览器是有区别的
IE 中的事件对象
type 属性:获取事件类型
srcElement属性:获取事件目标
cancelBubble属性:阻止事件冒泡
returnValue属性:阻止事件的默认行为
事件对象的常用属性:
1. type 事件类型 例如 "click',Dom对象是 click IE对象是 onclick
2.
事件对象的重要方法:
组织冒泡(点击按钮时 不触发父节点 例如div body的单击事件)
禁止元素默认行为 例如 超链接事件的跳转到网页功能,禁止后单击超链接不在跳转网页
DOM中的事件对象与IE的事件对象
IE 中的事件对象
type 属性:获取事件类型
srcElement属性:获取事件目标
cancelBubble属性:阻止事件冒泡
returnValue属性:阻止事件的默认行为
IE 中的事件对象
type 属性:获取事件类型
srcElement属性:获取事件目标
cancelBubble属性:阻止事件冒泡
returnValue属性:阻止事件的默认行为
兼容性
...
event = event || window.event
var ele = event.target || event.srcElement
...
本节主要内容
if(event.stopPropagation)千万不能写成 if(event.stopPropagation())
此处是以属性的形式进行判断。
此处的event是非IE浏览器的事件对象
具体指?
return event?event:window.event;
三元运算符 ?作用是判断?前的语句是否为真,为真则执行中间的语句,否则执行后面的语句
ie 中的事件对象
1 type属性用于获取事件类型
2 srcElement属性 用于获取事件的目标
3 cancelBubble属性 用于阻止事件冒泡 设置为true表示阻止冒泡 设置为false表示不阻止冒泡
4 returnValue 属性 用于阻止事件的默认行为 设置为false 表示阻止事件的默认行为
兼容ie8之前
IE中事件对象
以属性进行判断if(event.stopPropagation){}
在IE中的事件对象几乎都是属性
非IE的事件对象用event,IE8之前用window.event
dom中和ie中的event属性,比如获取dom中的事件目标event.target,在ie中则要用event.srcElement
IE的事件对象
dom中和ie中的event属性,比如获取dom中的事件目标event.target,在ie中则要用event.srcElement
三、事件对象
1、IE中的事件对象
(1)、type属性 用于获取事件类型
(2)、srcElement属性 用于获取事件的目标
(3)、cancelBubble属性 用于阻止事件冒泡
(4)、returnValue属性 用于阻止事件的默认行为