zoukankan      html  css  js  c++  java
  • Event对象跨浏览器兼容性写法

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Event对象跨浏览器兼容性写法</title>
    </head>
    <body>
        <script>
            var EventUtil={
                //添加事件
                addHandler:function(element,type,handler){
                    if (element.addEventListener){
                        element.addEventListener(type,handler,false);
                    }else if(element.attachEvent){
                        element.attachEvent("on"+type,handler);
                    }else{
                        element["on"+type]=handler;
                    }
                },
                //移除事件
                removeHandler:function (element,type,handler){
                    if (element.removeEventListener){
                        element.removeEventListener(type,handler,false);
                    }else if(element.detachEvent){
                        element.detachEvent("on"+type,handler);
                    }else{
                        element["on"+type]=handler;
                    }
                },
                //获取事件本身
                getTarget:function (){
                    return event.target || event.srcElement;
                },
                //阻止默认行为
                preventDefault:function (){
                    if(event.preventDefault){
                        event.preventDefault();
                    }else{
                        event.returnValue=false;
                    }
                },
                //取消冒泡和捕获
                stopPropagation:function (){
                    if(event.stopPropagation){
                        event.stopPropagation();
                    }else{
                        event.cancelBubble=true;
                    }
                }
            }
        </script>
        <!-- 测试 -->
        <div id="div">
            爸爸
            <button id="btn">儿子</button>
        </div>
        <a id="a" href="https://www.baidu.com/">百度</a>
        <script>
            var div=document.getElementById("div");
            var btn=document.getElementById("btn");
            EventUtil.addHandler(div,"click",function(){
                console.log("我是老子");
                console.log(EventUtil.getTarget(event));//获取target
            })
            EventUtil.addHandler(btn,"click",function(){
                console.log("我是儿子");
                EventUtil.stopPropagation();//阻止了冒泡
            })
            var a=document.getElementById("a");
            EventUtil.addHandler(a,"click",function(){
                console.log("我是链接");
                EventUtil.preventDefault();//阻止默认行为
            })
        </script>
    </body>
    </html>
  • 相关阅读:
    jmeter之三种参数化
    linux(centos6.5)常用命令
    win10+jdk+mysql+tomcat+jpress环境搭建与部署
    [剑指Offer] 29.最小的K个数
    [C/C++] C++中new的语法规则
    [C/C++] 深拷贝和浅拷贝
    [C/C++] #ifdef和#endif
    [C/C++] C++声明和定义的区别
    [C/C++] extern关键字详解以及与static、const区别
    [C/C++] static在C和C++中的用法和区别
  • 原文地址:https://www.cnblogs.com/vinson-blog/p/12114809.html
Copyright © 2011-2022 走看看