一、概述
瀏覽器事件流存在三個階段:捕獲階段、目標階段、冒泡階段,捕獲和冒泡是事件傳播的兩種截然相反的方式。
二、什么是捕獲和冒泡
見以下例子:
<div class="parent">
<div class="child"></div>
</div>
此結(jié)構(gòu)中,點擊子元素:
??捕獲機制中,事件從document一直向點擊的元素傳播,直到被點擊元素。
??冒泡機制中,事件從被點擊元素逐層向其父元素傳播,直到根節(jié)點。
?簡單的說,捕獲機制由外向內(nèi)傳播,冒泡機制由內(nèi)向外傳播。
三、事件綁定
?傳統(tǒng)綁定方法:onclick,使用的是冒泡機制,并且一個事件只能綁定一個函數(shù)(如需執(zhí)行多個函數(shù),可在外層函數(shù)內(nèi)定義多個函數(shù))
?非IE中用addEventListener(eventName,callback,isCapturing)綁定事件,IE8以下不支持此方法,最后的isCapturing參數(shù)true表示采用捕獲機制,false表示采用冒泡機制,不寫第三個參數(shù)默認為false,即默認采用冒泡機制,可以為一個事件綁定多個響應函數(shù)。
?由于IE8以下不支持addEventListener,事件綁定采用IE自有的attachEvent(eventName,callback),可以看到此函數(shù)無第三參數(shù),無法指定事件處理機制,默認使用捕獲機制處理。值得注意的是,自IE11起已不支持此方法,應當使用W3C標準規(guī)定的addEventListener方法。
1.基礎回顧-瀏覽器事件機制
2.JavaScript 詳說事件機制之冒泡、捕獲、傳播、委托
3.javascript事件機制詳解