事件流描述的是從頁面中接收事件的順序。IE的事件流水事件冒泡流,而Netscape Commuication的事件流水事件捕獲流。
- 事件冒泡
- 事件捕獲
DOM事件流
”DOM2級事件“規定的事件流包括三個階段:事件捕獲階段、處于目標階段和事件冒泡階段。
事件處理程序
- HTML事件處理
- DOM0級事件處理程序
- DOM2級事件處理程序
- addEventListener()
- removeEventListener()
都接受三個參數:要處理的事件名、作為事件處理程序的函數和一個布爾值。最后的布爾值參數如果是true,表示在捕獲階段調用事件處理程序;如果是false,表示在冒泡階段調用事件處理程序。大多情況下選擇false - 通過addEventListener()添加的事件處理程序只能使用removeEventListener()來移除。
事件對象
觸發DOM上的某個事件,會產生一個事件對象event,這個對象中包含著所有與事件有關的信息。event對象包含與創建它的特定事件有關的屬性和方法,觸發的事件類型不一樣,可用的屬性和方法也不一樣。
要阻止特定事件的默認行為,可以使用preventDefault()方法。只有cancelable屬性設置為true的事件,才可以使用preventDefaultfault()來取消其默認行為。另,stopPropagation()方法用于立即停止事件在DOM層次中的傳播,即取消進一步的事件捕獲或冒泡。
事件對象的eventPhase屬性,可以用來確定事件當前正位于事件流的哪個階段。如eventPhase等于1,處于捕獲階段;如eventPhase等于2,則處于目標對象上;如eventPhase等于3,則處于冒泡階段。
IE中的事件處理和事件對象都有所不同。
事件類型
- UI事件
- 焦點事件
- 鼠標事件
- 滾輪事件
- 文本事件
- 鍵盤事件
- 合成事件
- 變動事件