記錄 事件冒泡和事件捕獲

2022-05-10 08:18:19 字數 1197 閱讀 1008

1、概念理解

所有瀏覽器中,都支援事件冒泡,即事件由子元素向祖先元素傳播的,就像氣泡從水底向水面上浮一樣。把事件捕獲和冒泡的過程統稱為事件的傳播。

而在像firefox,chrome,safari這類所謂的標準瀏覽器中,事件傳播還有個階段,那就是捕獲階段,先發生捕獲的過程,再發生冒泡的過程。這個很少有用武之地,所以被人疏忽遺忘也在所難免了,不常用不代表它不存在。

(捕獲階段是乙個和冒泡階段完全相反的過程,即事件由祖先元素向子元素傳播,在 ie,opera瀏覽器中,是不存在這個階段的。)

從各瀏覽器提供的註冊事件監聽的方法中可見一斑:

①attachevent(適用於ie,opera) 有兩個引數,attachevent(」on」+type,fn);

②addeventlistener(適用於所謂標準瀏覽器)則有三個參 數,addeventlistener(type,fn,boolean),第三個引數boolean,就是決定註冊事件發生在捕獲階段還是冒泡階段,具體參考如下:

true : 捕獲階段

false : 冒泡階段

2、取消事件冒泡的方法:

只需加個stopbubble方法,即可取消事件冒泡

如:obj1.onclick = function()

obj2.onclick = function(e)

什麼時候需要阻止事件冒泡?事實上,現在絕大多數情況下都可以不必在意它。但是當你開始開發動態應用程式(尤其是需要處理鍵盤和滑鼠)的時候,就有這個必要了。

3、另外,阻止事件的傳播的方法:

在捕獲的過程中stoppropagation();後,後面的冒泡過程也不會發生了~

【收藏乙個相容多瀏覽器的阻止事件冒泡的函式】

function stopbubble(e)

else

}4、阻止事件的預設行為:

不是所有的事件都能冒泡,例如:blur、focus、load、unload。事件冒泡和捕獲應用起來,還有各種問題,有待研究!

拓展學習:

w3school 的html dom event 物件:

js事件、排錯、除錯、事件捕獲:

事件冒泡和事件捕獲

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

事件捕獲和事件冒泡

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

事件冒泡和事件捕獲

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