国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 網站 > WEB開發 > 正文

DOM標準事件的三個階段:冒泡、捕獲 dom事件三個階段

2024-04-27 15:19:02
字體:
來源:轉載
供稿:網友

本文主要解決兩個問題:

什么是事件流

DOM事件流的三個階段

起因

溫故了一下我的《javaScript高級程序設計》的時候,翻到DOM事件那一章,(說實話,現在無論是什么框架你都離不開操作DOM啊,畢竟這是你展示的最基本元素,就像人的細胞)。想起了dom事件流原理,好多人不明白,只知道click mouSEOut等實用場景,真要理解和更進一步的前端是要必須:理論+實踐 并行的。

當然,DOM事件所囊括的知識較為龐雜,所以本文專注與自己學習時所碰到的難點,DOM事件流。

流的概念,在現今的Javascript中隨處可見。比如說React中的單向數據流,Node中的流,又或是今天本文所講的DOM事件流。都是流的一種生動體現。至于流的具體概念,我們采用下文的解釋:

用術語說流是對輸入輸出設備的抽象。以程序的角度說,流是具有方向的數據。

事件流之事件冒泡與事件捕獲

在瀏覽器發展的過程中,開發團隊遇到了一個問題。那就是頁面中的哪一部分擁有特定的事件?

可以想象畫在一張紙上的一組同心圓,如果你把手指放在圓心上,那么你的手指指向的其實不是一個圓,而是紙上所有的圓。放到實際頁面中就是,你點擊一個按鈕,事實上你還同時點擊了按鈕所有的父元素。

開發團隊的問題就在于,當點擊按鈕時,是按鈕最外層的父元素先收到事件并執行,還是具體元素先收到事件并執行?所以這兒引入了事件流的概念。

事件流所描述的就是從頁面中接受事件的順序。

因為有兩種觀點,所以事件流也有兩種,分別是事件冒泡和事件捕獲。現行的主流是事件冒泡。

事件冒泡

事件冒泡即事件開始時,由最具體的元素接收(也就是事件發生所在的節點),然后逐級傳播到較為不具體的節點。舉個栗子,就很容易明白了。

<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <title>Event Bubbling</title></head><body>  <button id="clickMe">Click Me</button></body></html>

然后,我們給 button 和它的父元素,加入點擊事件。

var button = document.getElementById('clickMe');button.onclick = function() {  console.log('1. You click Button');};document.body.onclick = function() {  console.log('2. You click body');};document.onclick = function() {  console.log('3. You click document');};window.onclick = function() {  console.log('4. You click window');};

效果如圖所示:

在代碼所示的頁面中,如果點擊了button,那么這個點擊事件會按如下的順序傳播(Chrome瀏覽器):

button

body

document

window

也就是說,click事件首先在 <button> 元素上發生,然后逐級向上傳播。這就是事件冒泡。

事件捕獲

事件捕獲的概念,與事件冒泡正好相反。它認為當某個事件發生時,父元素應該更早接收到事件,具體元素則最后接收到事件。比如說剛才的demo,如果是事件捕獲的話,事件發生順序會是這樣的:

window

document

body

button

當然,由于時代更迭,事件冒泡方式更勝一籌。所以放心的使用事件冒泡,有特殊需要再使用事件捕獲即可。

DOM事件流

DOM事件流包括三個階段。

事件捕獲階段

處于目標階段

事件冒泡階段

如圖所示(圖片源于網絡,若侵權請告知):

1. 事件捕獲階段

也就是說,當事件發生時,首先發生的是事件捕獲,為父元素截獲事件提供了機會。

例如,我把上面的Demo中,window點擊事件更改為使用事件捕獲模式。(addEventListener最后一個參數, 為true則代表使用事件捕獲模式 ,false則表示使用事件冒泡模式。不理解的可以去學習一下addEventListener函數的使用)

window.addEventListener('click', function() {  console.log('4. You click window');}, true);

此時,點擊button的效果是這樣的。

可以看到,點擊事件先被父元素截獲了,且該函數只在事件捕獲階段起作用。

處于目標與事件冒泡階段

事件到了具體元素時,在具體元素上發生,并且被看成冒泡階段的一部分。隨后,冒泡階段發生,事件開始冒泡。

阻止事件冒泡

事件冒泡過程,是可以被阻止的。防止事件冒泡而帶來不必要的錯誤和困擾。

這個方法就是: stopPRopagation() 

我們對 button 的click事件做一些改造。

button.addEventListener('click', function(event) {  // event為事件對象  console.log('1. You click Button');  event.stopPropagation();  console.log('Stop Propagation!');}, false);

點擊后,效果如下圖:

不難看出,事件在到達具體元素后,停止了冒泡。但不影響父元素的事件捕獲。

總結與感想

事件流:描述的就是從頁面中接受事件的順序。分有事件冒泡與事件捕獲兩種。DOM事件流的三個階段:

事件捕獲階段

處于目標階段

事件冒泡階段

在學習DOM事件的過程中,了解了DOM事件的三個階段,也知道事件冒泡是干啥用的,又如何阻止。配合前期所學的二叉樹的相關知識,受益匪淺。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
天堂在线看视频| 久久五月精品| 18加网站在线| 最近免费中文字幕大全免费第三页 | 中文字幕av在线播放| 一区二区三区四区在线免费视频| 精品麻豆一区二区三区| 另类视频在线| 中文在线官网天堂| 久久香蕉av| 亚洲一本大道| 天天操天天曰| 精品无吗乱吗av国产爱色| 青青国产在线| 国产一级黄色| 99在线免费视频| 五月综合网站| 久热中文字幕在线观看| 中文av在线播放| 国产欧美日本亚洲精品一4区| 精品孕妇一区二区三区| 天天艹天天操| 69久久久久| 国产黄色大片在线观看| 国产永久免费高清在线观看| 在线观看精品一区二区三区| 日韩av成人| 国产裸舞福利在线视频合集| 午夜在线观看91| 国产精品视频一区二区久久| 四虎成人免费| av网站大全在线| 中文国产字幕在线观看| 尤物在线网址| 国产精品人人| 精品视频vs精品视频| 国产h色视频在线观看| 国产私人影院| 国产黄色免费网| 91精品专区| 国产精品久久麻豆| 在线伊人免费视频| 在线a人片免费观看视频| 精品国产一区二区三区四区阿崩 | 在线观看中文字幕一区| 国产区成人精品视频| 国产一级二级在线| 国产精品69一区二区三区| 国产网友自拍电影在线 | 91福利在线免费| 黄色av免费在线| 免费观看v片在线观看| 亚洲sss视频| 狂野欧美性猛交xxxx乱大交| 激情小说 在线视频| 狠狠综合久久久综合| 国产一起色一起爱| ·天天天天操| 天天草天天操| 国产卡一卡二卡三| 国产高清自拍视频在线观看| 亚洲精品国自产拍在线观看| 麻豆网站在线| 精品国产美女福利到在线不卡 | 国产xxxxx| 日本片在线看| 国产高清免费av在线| 女人色在线免费视频| 国产成人综合美国十次| 天堂在线国产| 国产黄色免费网| 免费观看久久久久| av免费在线免费| 国产小黄视频| 九色福利视频| 日本三级视频网站| 91麻豆精品国产91久久| 就爱干草视频| 精品国产一区二区三区久久久狼牙 | 久久精品国产亚洲a∨麻豆| 国产三级做爰在线观看| eeuss影院在线播放| 精品一区二区三区免费站| www.国产精| 9色在线视频网站| 国产视频2区| 国产男女av| 免费在线播放av| 人人九九精品| 成年黄网站在线观看免费| 999精品网| 99在线免费观看| 国产成人高清精品| 国产精品第八页| 国产黄色片在线观看| 精品欧美色视频网站在线观看| 国产一区电影| 国产精品视频h| 国产精品视频福利一区二区| 国产精品入口麻豆电影| 国产精品爱久久久久久久小说| 国产乱视频在线观看| 国产综合视频一区二区三区免费| 亚洲精品成人a| 青青在线视频| xxxxx中文字幕| 黄色在线视频观看网站| 黄色国产在线| 最新中文字幕在线| 国产福利在线免费观看| av首页在线| 超碰免费97在线观看| 国产精选在线观看| 国产欧美一区二区三区小说| 国产二区视频在线观看| 99热免费观看| 九九色在线观看| 国产成人福利| 超碰在线网址| 在线视频三区| 欧洲一区av| 国产aⅴ超薄肉色丝袜交足| aaa大片在线观看| 超碰在线网址| 国产精品美女一区二区三区四区 | 午夜影院在线| 中文字幕视频免费在线观看| 国产黄色片在线播放| 免费观看久久久久| 国产一二三区在线视频| 香蕉视频在线观看网站| 中文字幕在线第一页| 影音先锋日韩| 国产亚洲精品久久久久久青梅| 精品美女视频在线观看免费软件| www.毛片| 中文在线视频| 国产午夜在线| 中文字幕中文字幕在线中高清免费版| 国产午夜在线| 黄网址在线播放免费| 亚洲欧美中文字幕在线观看| 国产一级二级三级在线观看| 老司机精品视频一区二区| 精品欧美日韩一区二区| 最近中文字幕av免费高清| 欧美日韩综合高清一区二区| 国产对白国语对白| 狠狠干在线视频| 亚洲天堂二区| 国产精品冒白浆免费视频| 国产在线观看网站| 日本福利在线| 日本福利午夜视频在线| sm国产在线调教视频| 日本片在线看| 青青青手机在线视频观看| av在线1区2区| 日本国产在线| 久久av少妇| 国产麻豆精品高清在线播放| 99视频在线观看地址| 日本中文字幕高清视频| 国产麻豆视频| 国产夫妻视频| 亚洲欧美日韩一区成人| www.香蕉视频在线观看| аⅴ成人天堂中文在线| 九九热在线观看视频| 国产中文伊人| 国产小视频在线| 国产成免费视频| 亚洲精品影院在线| 免费精品国产自产拍观看| 欧美xxxx黑人又粗又长| 国产精品一区牛牛影视| 国产一级性片| 国产不卡一卡2卡三卡4卡5卡在线| 91在线看片| 国产中文字幕在线播放| 国产高清视频在线观看| www在线免费观看视频| 1区2区3区在线| 永久免费在线观看| 九九热在线免费视频| 国产香蕉免费精品视频| 亚洲xxxxxx| 国产黄色在线看| 欧美aaa一级片| 国产精品日日爱| 久热中文字幕在线观看| 91精品专区| 九九精品九九| 亚洲图区欧美| 国产aa视频| 国产精品久久一区二区三区不卡| 轻轻色免费在线视频| 在线观看免费高清完整| 国产精品美女视频免费观看软件| 久久久久久久美女|