亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JavaScript的事件流是什么

發布時間:2022-01-25 09:06:16 來源:億速云 閱讀:133 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關JavaScript的事件流是什么,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

    1.什么是事件流 ?

    在學習事件流之前我們先看看什么是事件 ?

    事件代表文檔或瀏覽器窗口中某個有意義的時刻

    即用戶與頁面的交互動作
    (如用戶點擊元素時,鼠標移動到某個元素上等等)

    • 事件的作用

    JavaScript 與 HTML 的交互就是通過事件實現的

    • 那么事件流是什么呢 ?

    頁面接受事件的順序

    2.事件流模型

    2.1) 事件冒泡

    事件被定義為從最具體的元素(DOM 樹的葉子)開始觸發,然后向上傳播至沒有那么具體的元素(DOM 樹的根節點)

    通過一個例子理解一下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>事件冒泡</title>
    </head>
    <body>
        <div>點擊</div>
    </body>
    </html>

    當點擊 <div> 元素后,會觸發 click 事件;
    然后 click 事件沿 DOM 樹一路向上,在經過的結點依次觸發,直至 document
    即 <div> &mdash;> <body> &mdash;> <html> &mdash;> document

    可以通過下圖來理解一下:

    JavaScript的事件流是什么

    2.2) 事件捕獲

    從最不具體的節點(DOM 樹的根節點)最先收到事件,而最具體的節點(DOM 樹的葉子 )應該最后收到事件

    通過一個例子來理解一下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>事件捕獲</title>
    </head>
    <body>
        <div>點擊</div>
    </body>
    </html>

    在點擊 <div> 后, click 事件首先由 document 捕獲;
    然后沿 DOM 樹一路向下傳播,直至達到目標元素 <div>
    即 document &mdash;> <html> &mdash;> <body> &mdash;> <div>

    通過下圖來理解一下:

    JavaScript的事件流是什么

    根據它的特點,它有著如下作用:

    在事件達到最終目標前攔截事件

    Tips:

    由于一些舊版本瀏覽器不支持事件捕獲,通常建議使用事件冒泡。

    3.&ensp;DOM 事件流

    DOM2 Events 規定事件流分為 3 個階段:

    事件捕獲、達到目標和事件冒泡

    事件捕獲最先發生,為提前攔截事件提供了可能
    然后實際的目標元素接受到了事件
    最后事件冒泡(最遲要在這個階段響應事件)

    通過一個例子理解一下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>DOM 事件流</title>
    </head>
    <body>
        <div>點擊</div>
    </body>
    </html>

    點擊<div> 元素后,以如下圖所示的順序觸發事件

    JavaScript的事件流是什么

    在 DOM 事件流中,實際的目標元素在捕獲階段不會接收到事件(捕獲階段從 document 到 <body> 就結束了)。

    捕獲階段: document &mdash;> <html> &mdash;> <body> 即圖中的 1, 2, 3;達到目標:即在 <div> 上觸發事件,即圖中的 4 (通常在事件處理時,被認為是冒泡階段的一部分);冒泡階段:<body> &mdash;> <html> &mdash;> document 即圖中的 5, 6, 7;

    Tips:

    雖然 DOM2 Events 規范明確捕獲階段不命中目標事件,但現代瀏覽器都會在捕獲階段在事件目標上觸發事件。
    所以,在事件目標上有兩個機會來處理事件。

    關于“JavaScript的事件流是什么”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    耒阳市| 陇西县| 沙河市| 灌阳县| 高要市| 梁平县| 兴仁县| 陕西省| 巴中市| 宜宾市| 贵州省| 义马市| 平乡县| 托里县| 秭归县| 林口县| 贵阳市| 宜阳县| 大埔区| 繁昌县| 县级市| 班玛县| 陈巴尔虎旗| 盘锦市| 垫江县| 册亨县| 湾仔区| 科尔| 搜索| 商城县| 临朐县| 麻栗坡县| 轮台县| 台南县| 土默特左旗| 申扎县| 阿克苏市| 印江| 城口县| 汤原县| 皮山县|