zoukankan      html  css  js  c++  java
  • 取消事件传播 兼容ie和所有浏览器 preventDefault returnValue stopPropagation cancelBubble addEventListener attachEvent

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title>事件取消</title>
        </head>
        <body>
            <div id="box">
                <button id="boxChild">boxChild</button>
            </div>
            
            <script type="text/javascript">
            //事件的取消
                var utilStopHandler = {
                    cancelEvent:function(event){//取消事件
                        var event = event || window.event;
                        if(event.preventDefault){
                            event.preventDefault();
                        }else if(event.returnValue){
                            event.returnValue = false;
                        }else{
                            return false;
                        }
                    },
                    stopEvent:function(){//取消事件的传播
                        var event = event || window.event;
                        if(event.stopPropagation){
                            event.stopPropagation();
                        }else if(event){
                            event.cancelBubble = false;
                        }else{
                            return false;
                        }
                    }
                }
                //封装自己的 句柄事件 
                    var myUtilEvent = {
                        myAddHandler:function(element, eType, hanlder){//添加句柄
                            if(element.addEventListener){//ie8及之前版本外的所有浏览器支持的标准事件模型
                                element.addEventListener(eType, hanlder, false);
                            }else if(element.attachEvent){
                                element.attachEvent(eType, hanlder);//兼容ie9以下版本
                            }else{
                                element["on" + eType] = hanlder;
                            }
                        },
                        myRemoveHandler:function(element, eType, hanlder){//删除句柄
                            if(element.removeEventListener){
                                element.removeEventListener(eType, hanlder, false);
                            }else if(element.detachEvent){
                                element.detachEvent("on" + eType, hanlder);
                            }else{
                                element["on" + eType] = null;
                            }
                        }
                    }
                    
                    var handler = function(e){
                        alert("thanks too!");
                    }
                
                var box = document.getElementById("box");
                var boxChild = document.getElementById("boxChild");
                myUtilEvent.myAddHandler(box,"click", handler);
                myUtilEvent.myAddHandler(boxChild,"click", function(){
                    alert("thanks!");
                    utilStopHandler.stopEvent(boxChild);
                });
            </script>
        </body>
    </html>
  • 相关阅读:
    Eclipse出错
    每天学点MVC 【ExecuteStoreCommand SqlParameterCollection 中已包含 SqlParameter】
    ORA12541: TNS: 无监听程序 每天学点Oracle
    每天学点Oracle10gplSql命令
    Access中Sql语句如何运行问题
    如何网络赚钱
    每天学点Oracle10g客户端配置
    存储过程(工作随笔)审核退单
    存储过程(工作随笔)慢性病
    存储过程(工作随笔) 住院情况分析
  • 原文地址:https://www.cnblogs.com/webgg/p/5316195.html
Copyright © 2011-2022 走看看