DOM事件標準定義了兩種事件流,這倆種事件流有著顯著的不同并且可能對你的應用有著相當大的影響毒嫡。這倆種事件流分別是捕獲(Capture)和冒泡(Bubble)癌蚁。
Netscape和微軟之前關于這方面各自提出了解決方案,其中Netscape選擇實現(xiàn)了捕獲事件流,而微軟則實現(xiàn)了冒泡事件流努释。最后W3C決定組合這倆種方法碘梢,并且大多數(shù)新瀏覽器都遵循這兩種事件流方式。
對于Safari伐蒂、chrome煞躬、Firefox這三個用addEventListener('監(jiān)聽事件類型的名稱',匿名函數(shù)逸邦,處理此事件的事件流(true和false))恩沛。
對于IE和Opera用于attachEvent('on'+監(jiān)聽事件類型的名稱,匿名函數(shù)缕减,處理此事件的事件流false)這里我們注意的是對于IE6~10雷客,IE11不支持。IE不支持事件捕獲桥狡。
這里true指的是事件捕獲搅裙、false指的是事件冒泡【主要是指事件發(fā)生在哪個階段】
事件冒泡:事件從事件目標(target)開始,往上冒泡直到頁面的最上一級標簽总放。事件由子元素向祖先元素傳播的呈宇,就 像氣泡從水底向水面上浮一樣。當事件在某一DOM元素被觸發(fā)時局雄,例如用戶在客戶名字節(jié)點上點擊鼠標甥啄,事件將跟隨著該節(jié)點繼承自的各個父節(jié)點冒泡穿過整個的DOM節(jié)點層次,直到它 遇到依附有該事件類型處理器的節(jié)點炬搭,此時蜈漓,該事件是onclick事件。在冒泡過程中的任何時候都可以終止事件的冒泡宫盔。
事件捕獲:事件從最上一級標簽開始往下查找融虽,直到捕獲到事件目標(target)。捕獲階段是一個和冒泡階段完全相反的過程灼芭,即事件由祖先元素向子元素傳播有额,和一個石子兒從水面向水底下沉一樣。事件的處理將從DOM層次的根開始彼绷,而不是從觸發(fā)事件的目標元素開始巍佑,事件被從目標元素的所有祖先元素依次往下傳遞。在這個過程中寄悯,事件會被從文檔 根到事件目標元素之間各個繼承派生的元素所捕獲萤衰。
下圖給出事件捕獲和事件冒泡:
以上就是我個人對這個知識點的理解。