事件觸發(fā)有三個階段:window 往事件觸發(fā)處傳播,遇到注冊的捕獲事件會觸發(fā)傳播到事件觸發(fā)處時觸發(fā)注冊的事件從事件觸發(fā)處往 window 傳播,遇到注冊的冒泡事件會觸發(fā)事件觸發(fā)一般來說會按照上面的順序進行,但是也有特例,如果給一個 body 中的子節(jié)點同時注冊冒泡和捕獲事件,事件觸發(fā)會按照注冊的順序執(zhí)行。
通常使用 addEventListener 注冊事件,該函數(shù)的第三個參數(shù)可以是布爾值,也可以是對象。對于布爾值 useCapture 參數(shù)來說,該參數(shù)默認值為 false ,useCapture 決定了注冊的事件是捕獲事件還是冒泡事件。對于對象參數(shù)來說,可以使用以下幾個屬性:
capture:布爾值,和 useCapture 作用一樣
once:布爾值,值為 true 表示該回調(diào)只會調(diào)用一次,調(diào)用后會移除監(jiān)聽
passive:布爾值,表示永遠不會調(diào)用 preventDefault