事件捕獲和事件冒泡

2022-09-07 20:36:19 字數 673 閱讀 1430

1. 捕獲階段(capture phase)從外向內:在捕獲階段時從最外層的祖先元素(window物件),向目標元素進行事件的捕獲,但是預設此時不會觸發事件

2. 目標階段(target phase):事件捕獲到目標元素,捕獲結束開始在目標元素上觸發事件

3.冒泡階段(bubble phase)從內向外:事件從目標元素向他的祖先元素傳遞,依次觸發祖先元素上的事件;(通俗來講就是元素a中有子元素b,b元素的事件觸發了,那麼a元素相同的事件也會觸發)

網景 和 微軟 曾經的戰爭還是比較火熱的,當時, 網景主張捕獲方式,微軟主張冒泡方式。後來 w3c 採用折中的方式,平息了戰火,制定了統一的標準——先捕獲再冒泡。

addeventlistener的第三個引數就是為冒泡和捕獲準備的.

addeventlistener有三個引數:

element.addeventlistener(event, function, usecapture)

第乙個引數是需要繫結的事件

第二個引數是觸發事件後要執行的函式

第三個引數預設值是false,表示在事件冒泡階段呼叫事件處理函式;如果引數為true,則表示在事件捕獲階段呼叫處理函式。

父元素跟內嵌的iframe觸發的事件毫無關係。比如:點選了iframe中的按鈕,事件只會在iframe中傳播父元素是收不到事件的,無捕獲無冒泡。

事件冒泡和事件捕獲

事件冒泡 事件物件沿dom樹向上傳播 事件捕獲 事件物件沿dom樹向下傳播 addeventlistener click function flase 引數預設為false 代表事件冒泡,引數為true代表事件捕獲 attachevent onclick function detachevent 沒...

事件捕獲和事件冒泡

如果乙個節點和它的乙個父節點都繫結了相同事件型別的 當事件觸發時哪個 會先執行?儘管網景和微軟的處理方式不一致,也不要太過擔心。netscape 4 支援事件捕捉 capturing 從頂層的父節點開始觸發事件,從外到內傳播。微軟則支援事件冒泡 bubbling 從最內層的節點開始觸發事件,逐級冒泡...

事件冒泡和事件捕獲

在js中,繫結的事件預設的執行時間是在冒泡階段執行,而非在捕獲階段 重要 這也是為什麼當父類和子類都繫結了某個事件,會先呼叫子類繫結的事件,後呼叫父類的事件。直接看下面例項 當點選id3元素時候,執行結果是 id2,id3,id1 解析 因為obj2與obj3繫結的方法在捕獲階段執行,obj1的事件...