zoukankan      html  css  js  c++  java
  • ♫【事件】事件处理程序

    事件冒泡
    事件捕获


    事件冒泡
    <div>
    <body> document.body
    <html> document.documentElement
    document document

    IE5.5及更早版本中的事件冒泡会跳过<html>元素。IE9、Firefox、Chrome和Safari则将事件一直冒泡到window对象

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
        <button id="myBtn">click</button>
        <script>
            var btn = document.getElementById('myBtn')
            /**
             * 使用 DOM0 级方法指定的事件处理程序被认为是元素的方法。
             * 因此,这时候的事件处理程序是在元素的作用域中运行;换句话说,程序中的this 引用当前元素
             */
            btn.onclick = function() {
                console.log(this.id)
            }
            btn.onclick = null
    
            /**
             * addEventListener removeEventListener DOM2级事件
             *
             * attachEvent detachEvent
             * 在使用 attachEvent() 方法的情况下,事件处理程序会在全局作用域中运行,因此this 等于window
             *
             * 这里调用了两次attachEvent() ,为同一个按钮添加了两个不同的事件处理程序。
             * 不过,与DOM方法不同的是,这些事件处理程序不是以添加它们的顺序执行,而是以相反的顺序被触发
             */
    
            /**
             * 事件捕获阶段 处于目标阶段 事件冒泡阶段
             */
            btn.onclick = function(event) {
                console.log('btn', event.eventPhase) // 2
            }
            document.body.addEventListener('click', function(event) {
                console.log('body true', event.eventPhase) // 1
            }, true)
            document.body.onclick = function(event) {
                console.log('body', event.eventPhase) // 3
            }
        </script>
    </body>
    </html>
  • 相关阅读:
    ZOJ 3818 Pretty Poem
    HDU 4597 Play Game
    HDU 4497 GCD and LCM
    CSU 1335 高桥和低桥
    UVA 10791 Minimum Sum LCM
    CSU 1119 Collecting Coins
    CSU 1120 病毒
    UVA 12169 Disgruntled Judge
    HDU 1301 Jungle Roads
    POJ 1258 Agri-Net
  • 原文地址:https://www.cnblogs.com/jzm17173/p/3550747.html
Copyright © 2011-2022 走看看