在触发DOM上的事件时都会产生一个对象,即事件对象event。
1.DOM中的事件对象event
有以下常用的属性和方法:
type属性:用于获取事件类型
target属性:用于获取事件目标,即哪个元素
stopPropagation()方法:阻止事件冒泡,即不执行上级祖先元素的行为
preventDefault()方法:阻止事件的默认行为,例如元素a的自动跳转行为,在移动端应用较多。
2.IE中的事件对象
IE8之前的浏览器要用window.event,所以在处理前先写一句event=event || window.event;
有以下常用的属性:
type属性:获取事件类型
secElement属性:获取事件目标
cancelBubble属性:阻止事件冒泡,是一个布尔值,当设置为true时表示阻止事件冒泡,设置为false时表示不阻止。
returnValue属性:阻止事件的默认行为,设置为false表示阻止事件的默认行为。
为了解决浏览器兼容问题,同样地,我们可以把方法封装在上一节的对象eventUtil中。代码如下:
getEvent:function(event){
return event?event:window.event;
},
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;
}
}