DOM事件流是什么-創(chuàng)新互聯(lián)

事件發(fā)生時會在元素節(jié)點之間按照特定的順序傳播,這個傳播過程即DOM事件流

創(chuàng)新互聯(lián)建站專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務,包含不限于網(wǎng)站設計、成都網(wǎng)站建設、清河門網(wǎng)絡推廣、微信小程序開發(fā)、清河門網(wǎng)絡營銷、清河門企業(yè)策劃、清河門品牌公關、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們大的嘉獎;創(chuàng)新互聯(lián)建站為所有大學生創(chuàng)業(yè)者提供清河門建站搭建服務,24小時服務熱線:18980820575,官方網(wǎng)址:muchs.cn

DOM事件流分為三個階段,分別為:

捕獲階段:事件從Document節(jié)點自上而下向目標節(jié)點傳播的階段;

目標階段:真正的目標節(jié)點正在處理事件的階段;

冒泡階段:事件從目標節(jié)點自上而下向Document節(jié)點傳播的階段。

DOM事件流是什么

捕獲階段:

<!DOCTYPE html>
<html>

<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>Document</title>
    <style>
        .father {
            overflow: hidden;
            width: 300px;
            height: 300px;
            margin: 100px auto;
            background-color: pink;
            text-align: center;
        }
        
        .son {
            width: 200px;
            height: 200px;
            margin: 50px;
            background-color: purple;
            line-height: 200px;
            color: #fff;
        }
    </style>
</head>

<body>
    <div>
        <div>son盒子</div>
    </div>
    <script>
        var son = document.querySelector('.son');
        son.addEventListener('click', function() {
            console.log('son');
        }, true);
        var father = document.querySelector('.father');
        father.addEventListener('click', function() {
            console.log('father');
        }, true);
        document.addEventListener('click', function() {
            console.log('document');
        }, true);
    </script>
</body>

</html>

控制臺輸出結果為:

DOM事件流是什么

可以看出捕獲階段 事件是從Document節(jié)點自上而下向目標節(jié)點傳播的。

冒泡階段:

<script>
        var son = document.querySelector('.son');
        son.addEventListener('click', function() {
            console.log('son');
        }, false);
        var father = document.querySelector('.father');
        father.addEventListener('click', function() {
            console.log('father');
        }, false);
        document.addEventListener('click', function() {
            console.log('document');
        })
    </script>

控制臺輸出結果為:

DOM事件流是什么

可以看出冒泡階段 事件是從目標節(jié)點自上而下向Document節(jié)點傳播的。

注意:

1、JS代碼只能執(zhí)行捕獲或者冒泡其中一個階段(要么是捕獲要么是冒泡)

2、onclick和attachEvent(ie)只能得到冒泡階段

3、addEventListener(type, listener[, useCapture]) 第三個參數(shù)如果是true,表示在事件捕獲階段調用事件處理程序;如果是false(不寫默認是false),表示在事件冒泡階段調用事件處理程序

4、實際開發(fā)中,我們很少使用事件捕獲,我們更關注事件冒泡

5、有些事件是沒有冒泡的,比如onblur、onfocus、onmouseenter、onmouseleave

6、事件的冒泡有時會帶來麻煩,不過是可以被阻止的,方法是:stopPropagation()

stopPropagation() 方法:終止事件在傳播過程的捕獲、目標處理或冒泡階段進一步傳播。調用該方法后,該節(jié)點上處理該事件的處理程序將被調用,事件不再被分派到其他節(jié)點。

以上就是詳解DOM事件流的三個階段的詳細內(nèi)容,更多請關注創(chuàng)新互聯(lián)網(wǎng)站制作公司其它相關文章!

當前標題:DOM事件流是什么-創(chuàng)新互聯(lián)
網(wǎng)頁路徑:http://muchs.cn/article44/dejdhe.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設、品牌網(wǎng)站建設、電子商務云服務器、手機網(wǎng)站建設、品牌網(wǎng)站設計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名