" />

欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

一起來學(xué)習(xí)一下JavaScript的事件流

 更新時(shí)間:2022年01月26日 16:59:31   作者:CSPsy  
這篇文章主要為大家詳細(xì)介紹了JavaScript的事件流,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

1. 什么是事件流 ?

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

事件代表文檔或?yàn)g覽器窗口中某個(gè)有意義的時(shí)刻

即用戶與頁面的交互動(dòng)作

(如用戶點(diǎn)擊元素時(shí),鼠標(biāo)移動(dòng)到某個(gè)元素上等等)

事件的作用

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

那么事件流是什么呢 ?

頁面接受事件的順序

2. 事件流模型

2.1) 事件冒泡

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

通過一個(gè)例子理解一下:

<!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> 元素后,會(huì)觸發(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)該最后收到事件

通過一個(gè)例子來理解一下:

<!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 個(gè)階段:

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

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

通過一個(gè)例子理解一下:

<!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)元素在捕獲階段不會(huì)接收到事件(捕獲階段從 document 到 <body> 就結(jié)束了)。

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

Tips:

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

總結(jié)

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

相關(guān)文章

  • javascript之Boolean類型對象

    javascript之Boolean類型對象

    本文主要介紹javascript中的Boolean類型對象,Boolean對象非常簡單,卻非常有用,希望能給大家做一個(gè)參考。
    2016-06-06
  • Javascript中Array.prototype.map()詳解

    Javascript中Array.prototype.map()詳解

    map 方法會(huì)給原數(shù)組中的每個(gè)元素都按順序調(diào)用一次 callback 函數(shù)。callback 每次執(zhí)行后的返回值組合起來形成一個(gè)新數(shù)組。 callback 函數(shù)只會(huì)在有值的索引上被調(diào)用;那些從來沒被賦過值或者使用 delete 刪除的索引則不會(huì)被調(diào)用。
    2014-10-10
  • 淺析JavaScript基本類型與引用類型

    淺析JavaScript基本類型與引用類型

    這篇文章主要介紹了JavaScript基本類型與引用類型詳解,講解了如類型的判斷、類型的轉(zhuǎn)換、類型的復(fù)制等內(nèi)容,需要的朋友可以參考下
    2014-05-05
  • 簡單總結(jié)JavaScript中的String字符串類型

    簡單總結(jié)JavaScript中的String字符串類型

    就像其他語言那樣,js中的字符串類型可以表示一串字符,由雙引號包住,這里簡單總結(jié)JavaScript中的String字符串類型的一些基礎(chǔ)知識(shí)
    2016-05-05
  • JavaScript 參考教程

    JavaScript 參考教程

    JavaScript 參考教程...
    2006-12-12
  • 簡單掌握J(rèn)avaScript中const聲明常量與變量的用法

    簡單掌握J(rèn)avaScript中const聲明常量與變量的用法

    const和let一樣,也是ES6版本中引入的新關(guān)鍵字,下面我們就通過例子來簡單掌握J(rèn)avaScript中const關(guān)鍵詞聲明常量與變量的用法
    2016-05-05
  • 解讀document.querySelector()方法

    解讀document.querySelector()方法

    這篇文章主要介紹了document.querySelector()方法的使用,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 用正則表達(dá)式替換圖片地址img標(biāo)簽

    用正則表達(dá)式替換圖片地址img標(biāo)簽

    如何替換一段HTML字符串中包含的所有img標(biāo)簽的src值?下面我們用正則解決這個(gè)問題
    2013-11-11
  • javascript設(shè)計(jì)模式之享元模式

    javascript設(shè)計(jì)模式之享元模式

    這篇文章主要為大家介紹了javascript享元模式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • JS、CSS加載中的小問題探討

    JS、CSS加載中的小問題探討

    JS,CSS加載中的一些小問題,或許大家早已把它遺忘,下面和大家一起重溫下,感興趣的朋友可以不要錯(cuò)過
    2013-11-11

最新評論