摘要:目標(biāo)階段事件對(duì)象到達(dá)事件對(duì)象的事件目標(biāo)。如果事件類型指示事件不冒泡,則事件對(duì)象將在完成此階段之后停止。氣泡階段事件對(duì)象以相反順序傳播目標(biāo)的祖先,從的父對(duì)象開始,并以窗口結(jié)束。涉及到事件委托時(shí)這兩個(gè)所指的元素才會(huì)不一樣參考等級(jí)概述事件流
DOM
DOM(Document Object Model) 全稱文檔對(duì)象模型. 文檔可以是HTML, XML, 或者XHTML文檔.DOM定義 的是一組與平臺(tái)和語(yǔ)言的接口. 目前形成了三個(gè)演進(jìn)的標(biāo)準(zhǔn), DOM Level 1, DOM Level 2, DOM Level 3. 每個(gè)新的Level都是在原有的基礎(chǔ)之上增加了新的接口.
可以看到, 在DOM level 2里引入了事件, 主要有EventTarget, Mouse等接口. DOM level 2里主要引入了鍵盤事件.
Event事件流
監(jiān)聽器 target.addEventListener(type, listener[, useCapture])的第三個(gè)參數(shù)useCapture, 類型為布爾, 默認(rèn)為false,表示事件觸發(fā)使用冒泡流. 先觸發(fā)內(nèi)層元素的監(jiān)聽器, 再觸發(fā)外層元素的監(jiān)聽器. useCapture取值為true時(shí), 將先觸發(fā)外層元素的監(jiān)聽器, 再觸發(fā)內(nèi)層元素的監(jiān)聽器.
根據(jù)DOM2級(jí)事件規(guī)定
共有三個(gè)事件階段:捕獲階段、目標(biāo)階段和氣泡階段。如在 dispatch之前調(diào)用stopPropagation() , 則將跳過(guò)所有階段
捕獲階段:事件對(duì)象通過(guò)目標(biāo)的祖先從窗口傳播到目標(biāo)的父對(duì)象。這個(gè)階段也被稱為捕獲階段。
目標(biāo)階段:事件對(duì)象(event object)到達(dá)事件對(duì)象的事件目標(biāo)(event target)。這個(gè)階段也被稱為at-target階段。如果事件類型指示事件不冒泡,則事件對(duì)象將在完成此階段之后停止。
氣泡階段:事件對(duì)象以相反順序傳播目標(biāo)的祖先,從event target的父對(duì)象開始,并以窗口結(jié)束。這個(gè)階段也稱為冒泡階段。
配合代碼理解. 此處我們點(diǎn)擊的
Document
如果我們點(diǎn)擊btn,也可以視為同時(shí)點(diǎn)擊了btn的容器元素, 甚至單擊了整個(gè)頁(yè)面. 因?yàn)槲覀冇诿恳患?jí)元素都添加了監(jiān)聽器, 控制臺(tái)打印結(jié)果如下.
Event相關(guān)易混淆關(guān)鍵詞
eventTarget / event.Target
能用addEventListener方法添加事件監(jiān)聽器的對(duì)象都是eventTarget.
Element,document 和 window 是最常見的eventTarget.
event.target, 是觸發(fā)當(dāng)前事件的最小單位元素.
event.currentTarget / event.Target
event.target返回觸發(fā)事件的元素;event.currentTarget返回綁定事件的元素
具體的說(shuō)就是event.currentTarget是注冊(cè)事件時(shí)所指向的元素,而event.target是響應(yīng)事件的最小子元素,也就是最深層級(jí)的觸發(fā)事件的元素。
涉及到事件委托時(shí), 這兩個(gè)所指的元素才會(huì)不一樣.
參考:
https://www.cnblogs.com/johnn... DOM等級(jí)概述
https://www.w3.org/TR/DOM-Lev... W3C事件流
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/96192.html
-
摘要:事件流指的是從頁(yè)面接收事件的順序。級(jí)事件規(guī)定方法的第三個(gè)參數(shù)設(shè)為,表示事件在捕獲階段觸發(fā)。目前支持事件捕獲流的瀏覽器有,,,,。事件流根據(jù)級(jí)事件規(guī)定,事件流應(yīng)該包括三個(gè)階段,事件捕獲階段,處于目標(biāo)階段和事件冒泡階段。
什么是事件?(敲黑板)
事件,就是文檔或?yàn)g覽器窗口發(fā)生的一些特定的交互瞬間。(by 《JavaScript高級(jí)程序設(shè)計(jì)》)比如鼠標(biāo)點(diǎn)擊,雙擊,滾動(dòng)條滑動(dòng)...
什么是事件...
-
摘要:本文主要解決兩個(gè)問題什么是事件流事件流的三個(gè)階段起因在學(xué)習(xí)前端的大半年來(lái),對(duì)事件了解甚少。事件流所描述的就是從頁(yè)面中接受事件的順序。事件流事件流包括三個(gè)階段。防止事件冒泡而帶來(lái)不必要的錯(cuò)誤和困擾。分有事件冒泡與事件捕獲兩種。
本文主要解決兩個(gè)問題:
什么是事件流
DOM事件流的三個(gè)階段
起因
在學(xué)習(xí)前端的大半年來(lái),對(duì)DOM事件了解甚少。一般也只是用用onclick來(lái)綁定個(gè)點(diǎn)擊事件。...
-
摘要:本文主要解決兩個(gè)問題什么是事件流事件流的三個(gè)階段起因在學(xué)習(xí)前端的大半年來(lái),對(duì)事件了解甚少。事件流所描述的就是從頁(yè)面中接受事件的順序。事件流事件流包括三個(gè)階段。防止事件冒泡而帶來(lái)不必要的錯(cuò)誤和困擾。分有事件冒泡與事件捕獲兩種。
本文主要解決兩個(gè)問題:
什么是事件流
DOM事件流的三個(gè)階段
起因
在學(xué)習(xí)前端的大半年來(lái),對(duì)DOM事件了解甚少。一般也只是用用onclick來(lái)綁定個(gè)點(diǎn)擊事件。...
-
摘要:但對(duì)于整個(gè)事件流上的別的元素來(lái)說(shuō),執(zhí)行順序還會(huì)受到另外一個(gè)因素的影響。以上面的場(chǎng)景為例,在捕獲階段執(zhí)行的事件,如果執(zhí)行,則事件流終止,不會(huì)到達(dá)目標(biāo)階段,的世界則不會(huì)被執(zhí)行執(zhí)行結(jié)果為線上參考事件流
向dom綁定事件的事件的三種方式
行內(nèi)綁定
按鈕
js內(nèi)綁定
btnDom.onclick = function clickHandler() {
console.log(click)...
Anleb
評(píng)論0
收藏0
-
摘要:事件捕獲提出的事件流模型稱為事件捕獲。事件代理則是一種簡(jiǎn)單有效的技巧,通過(guò)它可以把事件處理器添加到一個(gè)父級(jí)元素上,從而避免把事件處理器添加到多個(gè)子級(jí)元素上。更新無(wú)需重新綁定事件處理器,因?yàn)槭录韺?duì)不同子元素可采用不同處理方法。
首先我們思考一個(gè)很有意思的事情:一張紙上畫了兩個(gè)同心圓,當(dāng)我們把手指放到圓心上時(shí),手指指向的不是一個(gè)圓,而是紙上的兩個(gè)圓,同理之,當(dāng)我們單擊網(wǎng)頁(yè)上的一個(gè)div...
OBKoro1
評(píng)論0
收藏0
-
摘要:處于目標(biāo)階段事件在上發(fā)生并處理。冒泡階段事件又傳播回文檔。不支持捕獲事件的。總結(jié)二使用事件委托新添加的元素還會(huì)有之前的事件。事件對(duì)象在觸發(fā)某個(gè)事件時(shí),會(huì)產(chǎn)生一個(gè)事件對(duì)象。
js 是采用異步事件驅(qū)動(dòng)的機(jī)制來(lái)響應(yīng)用戶操作的,也就是說(shuō)當(dāng)用戶對(duì)某個(gè)html元素進(jìn)行操作的時(shí)候,會(huì)產(chǎn)生一個(gè)事件,該事件會(huì)驅(qū)動(dòng)某些函數(shù)來(lái)處理。事件源:產(chǎn)生事件的地方(html元素,窗口,其他等等);事件:鼠標(biāo)事件,鍵盤...