阻止事件
一。取消浏览器对事件的默认行为(响应)(比如标签的跳转等)并停止事件的继续传播。
function stopEvent (evt)
{
var evt = evt || window.event;
if (evt.preventDefault) {
evt.preventDefault();
evt.stopPropagation();
} else {
evt.returnValue = false;//IE
evt.cancelBubble = true;//IE
}
}
二。只阻止事件继续传播(不取消默认行为)即停止事件冒泡
function stopEvent (evt)
{
var evt = evt || window.event;
if (evt.stopPropagation) {
evt.stopPropagation();
} else {
evt.cancelBubble = true;//IE
}
}
三。只取消默认行为(不阻止事件的继续传播)
function stopEvent (evt)
{
var evt = evt || window.event;
if (evt.preventDefault) {
evt.preventDefault();//DOM
} else {
evt.returnValue = false;//IE
}
}
例:
var EX = {
//添加事件
addEvent:function(k,v){ //k是一个事件名;v是一个函数
var me = this;
if(me.addEventListener){ //兼容IE8以上
me.addEventListener(k,v,false); //k是一个事件名;v是一个函数;false表示事件冒泡执行
}else if(me.attachEvent){ //兼容处理ie8及以下
me.attachEvent('on'+k,v); //on+k事件名,如click,v 一个函数,此处的格式为 me.attachEvent('onclick',function)
}else{
me['on'+k] = v; //兼容处理好了后,假设me[onclick] = function = me.onclick=function;
}
},
//移除事件
removeEvent:function(k,v){ //k是一个事件名;v是一个函数
var me = this;
if(me.removeEventListener){ //对应addEventListener()方法
me.removeEventListener(k,v,false);
}else if(me.detachEvent){ //对应attachEvent()方法
me.detachEvent('on'+k,v);
}else{
me['on'+k] = null; //空对象指针
}
},
//停止事件,取消事件冒泡传递
stop:function(evt){
evt = evt||window.event;
//stopPropagation()方法,阻止分派到其他节点
evt.stopPropagation?evt.stopPropagation():evt.cancelBubble=true;
}
}
//添加事件
addEvent:function(k,v){ //k是一个事件名;v是一个函数
var me = this;
if(me.addEventListener){ //兼容IE8以上
me.addEventListener(k,v,false); //k是一个事件名;v是一个函数;false表示事件冒泡执行
}else if(me.attachEvent){ //兼容处理ie8及以下
me.attachEvent('on'+k,v); //on+k事件名,如click,v 一个函数,此处的格式为 me.attachEvent('onclick',function)
}else{
me['on'+k] = v; //兼容处理好了后,假设me[onclick] = function = me.onclick=function;
}
},
//移除事件
removeEvent:function(k,v){ //k是一个事件名;v是一个函数
var me = this;
if(me.removeEventListener){ //对应addEventListener()方法
me.removeEventListener(k,v,false);
}else if(me.detachEvent){ //对应attachEvent()方法
me.detachEvent('on'+k,v);
}else{
me['on'+k] = null; //空对象指针
}
},
//停止事件,取消事件冒泡传递
stop:function(evt){
evt = evt||window.event;
//stopPropagation()方法,阻止分派到其他节点
evt.stopPropagation?evt.stopPropagation():evt.cancelBubble=true;
}
}