最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript的事件流你了解嗎

 更新時間:2022年01月26日 17:00:28   作者:CSPsy  
這篇文章主要為大家介紹了JavaScript的事件流,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助<BR>

1. 什么是事件流 ?

在學(xué)習(xí)事件流之前我們先看看什么是事件 ?

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

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

事件的作用

JavaScript 與 HTML 的交互就是通過事件實(shí)現(xiàn)的

那么事件流是什么呢 ?

頁面接受事件的順序

2. 事件流模型

2.1) 事件冒泡

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

通過一個例子理解一下:

<!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>點(diǎn)擊</div>
</body>
</html>

當(dāng)點(diǎn)擊 <div> 元素后,會觸發(fā) click 事件;
然后 click 事件沿 DOM 樹一路向上,在經(jīng)過的結(jié)點(diǎn)依次觸發(fā),直至 document;
即 <div> —> <body> —> <html> —> document

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

在這里插入圖片描述

2.2) 事件捕獲

從最不具體的節(jié)點(diǎn)(DOM 樹的根節(jié)點(diǎn))最先收到事件,而最具體的節(jié)點(diǎn)(DOM 樹的葉子 )應(yīng)該最后收到事件

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

<!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>點(diǎn)擊</div>
</body>
</html>

在點(diǎn)擊 <div> 后, click 事件首先由 document 捕獲;
然后沿 DOM 樹一路向下傳播,直至達(dá)到目標(biāo)元素 <div>
即 document —> <html> —> <body> —> <div>

通過下圖來理解一下:

在這里插入圖片描述

根據(jù)它的特點(diǎn),它有著如下作用:

在事件達(dá)到最終目標(biāo)前攔截事件

Tips:

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

3. DOM 事件流

DOM2 Events 規(guī)定事件流分為 3 個階段:

事件捕獲、達(dá)到目標(biāo)和事件冒泡。

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

通過一個例子理解一下:

<!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>點(diǎn)擊</div>
</body>
</html>

點(diǎn)擊<div> 元素后,以如下圖所示的順序觸發(fā)事件

在這里插入圖片描述

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

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

Tips:

雖然 DOM2 Events 規(guī)范明確捕獲階段不命中目標(biāo)事件,但現(xiàn)代瀏覽器都會在捕獲階段在事件目標(biāo)上觸發(fā)事件。
所以,在事件目標(biāo)上有兩個機(jī)會來處理事件。

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • 在JavaScript中使用對數(shù)Math.log()方法的教程

    在JavaScript中使用對數(shù)Math.log()方法的教程

    這篇文章主要介紹了在JavaScript中使用對數(shù)Math.log()方法的教程,是JS入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-06-06
  • javascript判斷office版本示例

    javascript判斷office版本示例

    這篇文章主要介紹了javascript判斷office版本示例,需要的朋友可以參考下
    2014-04-04
  • js的toUpperCase方法用法實(shí)例

    js的toUpperCase方法用法實(shí)例

    這篇文章主要介紹了js的toUpperCase方法用法,實(shí)例分析了toUpperCase方法轉(zhuǎn)換大寫的使用技巧,需要的朋友可以參考下
    2015-01-01
  • 最新評論

    崇明县| 临颍县| 如东县| 潮安县| 定结县| 互助| 农安县| 榆社县| 鄂温| 蚌埠市| 葫芦岛市| 宿迁市| 彭水| 临湘市| 浙江省| 临洮县| 汶川县| 溧阳市| 赫章县| 余干县| 东丰县| 昭平县| 通辽市| 东兴市| 大宁县| 京山县| 祁连县| 宁明县| 吉安县| 尉犁县| 黑龙江省| 永川市| 东阳市| 水城县| 包头市| 南郑县| 福泉市| 达日县| 比如县| 孟连| 温泉县|