• DOM中的事件对象


    三、事件对象
    事件对象event
    1、DOM中的事件对象
    (1)、type:获取事件类型
    (2)、target:事件目标
    (3)、stopPropagation() 阻止事件冒泡
    (4)、preventDefault() 阻止事件的默认行为

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <style>
            #box{
                width: 300px;
                height: 100px;
                border: 2px solid red;
            }
        </style>
    </head>
    
    <body>
        <div id="box">
            <input type="button" value="按钮1" id="btn1" onclick="showMes()">
            <input type="button" value="按钮2" id="btn2">
            <input type="button" value="按钮3" id="btn3">
            <a href="event.html" id="go">跳转</a>
        </div>
        <script>
        //html事件处理程序
        function showMes(event) {
            alert(event.type);
            event.stopPropagation();
        }
    
        function showBox(event){
            alert(event.target.nodeName);
        }
    
        function stopGo(event){
            event.preventDefault();
            event.stopPropagation();
        }
    
        //dom0级事件处理程序
        var btn2 = document.getElementById("btn2");
        var box = document.getElementById("box");
        var go = document.getElementById("go");
        btn2.onclick = function showmessage() {
            alert("这是dom0级处理程序");
        }
        btn2.onclick = null; //删除onclick属性
    
        // //dom2级事件处理程序
        // var btn3 = document.getElementById("btn3");
        // addEventListener("click", showMes, false); //事件名不能加on,false兼容各种浏览器,listener单词不要写错。
        // addEventListener("click", function() {
        //     alert(btn3.value);
        // }, false);
        // addEventListener("click", function() {
        //     alert("这是dom2级处理程序");
        // }, false);
        // removeEventListener("click", showMes, false); //删除事件属性
    
        // //dom0 和 dom2都可以添加多个事件属性,按照代码顺序执行
    
        //能力检测 跨浏览器事件处理
        var eventutill = {
            //添加句柄
            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]=null;
                }
            }
        }
        eventutill.addHandler(btn3,"click",showMes);//click记得要加引号
        eventutill.addHandler(box,"click",showBox);
        eventutill.addHandler(go,"click",stopGo);
        //eventutill.addHandler(btn3,“click”,showMes);
    
        </script>
    </body>
    
    </html>

    2、IE中的事件对象
    (1)、type:获取事件类型
    (2)、srcElement:事件目标
    (3)、cancelBubble=true阻止事件冒泡
    (4)、returnValue=false阻止事件的默认行为

    var eventutill = {
            //添加句柄
            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]=null;
                }
            },
    
            getEvent:function(event){
                return event?event:window.event;//这个是三目运算符
                //return event = event || window.event;
            },
            getType:function(event){
                return event.type;
            },//不存在兼容问题
            getElement:function(event){
                return event.target || event.srcElement;
            },
            preventDefault:function(event){
                if (event.preventDefault) {
                    event.preventDefault();
                }else{
                    event.returnValue = false;
                }
            },
            //判断都是以属性形式判断,不能以方法来判断,不要加()
            stopPropagation:function(event){
                if(event.stopPropagation){
                    event.stopPropagation();
                }else{
                    event.cancelBubble=true;
                }
            }
        }

     编程练习:

  • 相关阅读:
    wait/sleep/yield的区别
    54点提高PHP编程效率(转)
    ftp 使用
    转义 html 里特殊含义字符
    查看端口是否被占用
    webservice 获取调用者IP
    字符编码
    你有读过软件的协议或是网站的服务条款吗?
    使用TSQL的Rand函数生成随机数的艰苦历程
    几个.NET方面的问题——参考答案
  • 原文地址:https://www.cnblogs.com/iceflorence/p/6083893.html
Copyright © 2020-2023  润新知