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>
    <!-- 
        event;代表事件本身
        event.type;代表事件类型;如:click
        event.target;表示触发事件的源头,通俗理解:点击谁触发了事件,target就是谁
        event.currentTarget;表示包含事件的元素;通俗理解:事件绑定在谁身上,currentTarget就是谁
        event.preventDefault();阻止默认行为;如阻止a标签的链接跳转
        event.stopPropagation();阻止事件冒泡和事件捕获;(翻译propagation:传播/繁殖/蔓延)
        clientX/clientY;触发事件时鼠标位于浏览器窗口的固定X/Y轴坐标,不受滚动条影响;
        pageX/pageY;触发事件时鼠标位于浏览器窗口的X/Y轴坐标,受滚动条影响;
        screenX/screenY;触发事件时鼠标位于屏幕的X/Y轴坐标;
     -->
     <style>
         #div{
             width: 100px;
             height: 60px;
             border: 1px solid black;
         }
         #sec{
             width: 400px;
             height: 1000px;
             background: yellow;
         }
     </style>
</head>
<body>
    <div id="div">
        爸爸<br />
        <button id="btn">儿子</button>
    </div>
    <a id="a" href="https://www.baidu.com/">百度</a><!-- 默认行为:跳转至百度 -->
    <ul id="ul">
        ul
        <li id="li">li1</li>
        <li>li2</li>
    </ul>
    <section id="sec">sec</section>
    <script>
        var div=document.getElementById("div");
        var btn=document.getElementById("btn");
        //event.target/event.currentTarget
        //事件句柄的函数参数默认就是event;可以随便命名(如:function(a)),后续调用可以用参数,也可以直接用event
        div.addEventListener("click",function(){    
            console.log("叫爸爸")
            console.log(event.target);//触发事件的源头;即整个button
            console.log(event.currentTarget);//执行包含事件本身的元素;即整个div
        })
        //event/event.type
        btn.addEventListener("click",function (){
            console.log(event);//事件本身
            console.log(event.type);//事件类型
            
        })
        //event.preventDefault()
        var a=document.getElementById("a");
        a.addEventListener("click",function (){
            event.preventDefault();//阻止了a标签的链接跳转
        })
        //event.stopPropagation()
        var ul=document.getElementById("ul");
        var li=document.getElementById("li");
        ul.addEventListener("click",function (){
            alert("ul");
        });
        li.addEventListener("click",function (){
            alert("li");
            event.stopPropagation();//添加该属性后,触发li事件后停止冒泡,不会再执行ul的事件
        })
        //clientX/clientY; pageX/pageY; screenX/screenY;
        var sec=document.getElementById("sec");
        sec.addEventListener("click",function(){
            console.log(event.clientY);//触发事件时鼠标的屏幕坐标,不受滚动条影响
            console.log(event.pageY);//触发事件时鼠标的浏览器窗口坐标,受滚动条影响
            console.log(event.screenY);//触发事件时鼠标的屏幕坐标
        })
    </script>
</body>
</html>

猜你喜欢

转载自www.cnblogs.com/vinson-blog/p/12112818.html
今日推荐