<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                #### 什么叫事件流 1. DOM2級規定的事件流包括三個階段:事件捕獲階段、處于目標階段、事件冒泡階段 #### 事件冒泡 1. 即事件開始時由最具體的元素接收,然后逐級向上傳播到頂層節點 2. div -> body -> html -> document -> window ``` let btn \= document.querySelector('button') btn.onclick \= function() { console.log( 'button' ) } document.body.onclick \= function() { console.log( 'body' ) } document.documentElement.onclick \= function() { console.log( 'html' ) } document.onclick \= function() { console.log( 'document' ) } window.onclick \= function() { console.log( 'window' ) } ``` #### 事件捕獲 1. 事件捕獲是另一種事件流,即從最不具體的元素開始接收事件 2. window -> document -> html -> body -> div ``` let btn \= document.querySelector('button') btn.addEventListener('click', function() { console.log( 'button' ) }, true) document.body.addEventListener('click', function() { console.log( 'body' ) }, true) document.documentElement.addEventListener('click', function() { console.log( 'html' ) }, true) document.addEventListener('click', function() { console.log( 'document' ) }, true) window.addEventListener('click', function() { console.log( 'window' ) }, true) ``` #### 事件委托 1. 事件委托是利用事件冒泡特性而產生的技術,準確來說是利用了事件流,冒泡和捕獲都可以實現委托 2. 為了處理多個元素相同的事件 3. 事件委托有以下幾點優點: 1. 性能更高,只需要綁定一個函數,開辟一塊空間 2. 操作引用更少,所花費的時間也更少 3. document對象可以快速訪問,不需要等待DOMContentLoaded 或 load事件事件完畢即可綁定并實現事件 #### DOM0級事件處理程序 1. 添加事件,on + 事件名:onclick = function(){} 2. 移除事件,onclick = null #### DOM2級事件處理程序 1. 添加事件,addEventListener( 'click', handle, false ) 2. 移除事件,removeEventListener( 'click', handle, false ) 3. DOM2級事件的優點在于可以為一個元素添加相同的事件多次,按添加的順序進行執行 4. 瀏覽器支持:IE9及以上 5. addEventListener第三個參數,為true的話為事件捕獲,默認false為事件冒泡 6. 小技巧,當為同一個元素綁定不同的事件類型,可通過e.type進行case處理 #### IE8及以下事件處理程序 1. IE8不支持addEventListener事件 2. 添加事件,attachEvent( 'onclick', handler ) 3. 移除事件,detachEvent( ‘onclick’, handler ) 4. 對于同一個元素添加多個相同的事件,后添加的先執行 #### 阻止事件的默認行為:e.preventDefault() #### 阻止事件的傳播(冒泡或捕獲):e.stopPropagation() #### DOM元素移除,事件不會移除 #### 當前事件處于的事件階段:e.eventPhase 1. eventPhase: 1 -- 捕獲階段 2. eventPhase: 2 -- 目標階段 3. eventPhase: 3 -- 冒泡階段 #### 事件對象中的幾個重要坐標 1. 瀏覽器可視區左上角(0,0)的坐標: e.clientX e.clientY 2. 相對于設備屏幕左上角(0,0)的坐標: e.screenX e.screenY 3. 相對于事件源左上角(0,0)的坐標: e.offsetX e.offsetY 4. 相對于整個網頁左上角(0,0)的坐標: e.pageX e.pageY ![](https://box.kancloud.cn/bc7b3404a7292386cc17fa3ab1afb887_1208x643.png)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看