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;
            }
        }
  • 相关阅读:
    程序用windows快捷键
    vc6中如何加入BMP图片资源
    vc 中解析字符串
    视频压缩编码问与答
    ActiveX and Com
    Windows 2000 IIS 安装、配置.WEB篇
    javascript 如何调用activex的方法和属性
    bmp 转为jpg
    Writing a Custom Membership Provider for the Login Control in ASP.NET 2.0
    几种DC及区别
  • 原文地址:https://www.cnblogs.com/Byme/p/5732053.html
Copyright © 2011-2022 走看看