阻止事件

一。取消浏览器对事件的默认行为(响应)(比如标签的跳转等)并停止事件的继续传播。


    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;
        }
    }
posted @ 2016-08-03 11:09  abcByme  阅读(679)  评论(1编辑  收藏  举报