zoukankan      html  css  js  c++  java
  • 阻止事件

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


        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;
            }
        }
  • 相关阅读:
    【题解】Atcoder ARC#76 F-Exhausted?
    【题解】SCOI2006萌萌哒
    【题解】51nod1967 路径定向
    巧克力之树 [点分治+树状数组]
    thr [树链剖分+dp]
    [bzoj4361] isn [树状数组+dp+容斥原理]
    [POI2015][bzoj4383] Pustynia [线段树优化建图+拓扑排序]
    [HNOI2015][bzoj4011] 落叶枫音 [拓扑DP]
    [Atcoder Grand Contest 006 F][AGC006F] Blackout [染色]
    [bzoj4712] 洪水 [树链剖分+线段树+dp]
  • 原文地址:https://www.cnblogs.com/Byme/p/5732053.html
Copyright © 2011-2022 走看看