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