事件是用戶操作網頁時發生的交互動作,比如 click/move, 事件除了用戶觸發的動作外,還可以是文檔加載,窗口滾動和大小調整。事件被封裝成一個 event 對象,包含了該事件發生時的所有相關信息( event 的屬性)以及可以對事件進行的操作( event 的方法)。
事件是用戶操作網頁時發生的交互動作或者網頁本身的一些操作,現代瀏覽器一共有三種事件模型:DOM0 級事件模型,這種模型不會傳播,所以沒有事件流的概念,但是現在有的瀏覽器支持以冒泡的方式實現,它可以在網頁中直接定義監聽函數,也可以通過 js 屬性來指定監聽函數。所有瀏覽器都兼容這種方式。直接在dom對象上注冊事件名稱,就是DOM0寫法。
IE 事件模型,在該事件模型中,一次事件共有兩個過程,事件處理階段和事件冒泡階段。事件處理階段會首先執行目標元素綁定的監聽事件。然后是事件冒泡階段,冒泡指的是事件從目標元素冒泡到 document,依次檢查經過的節點是否綁定了事件監聽函數,如果有則執行。這種模型通過attachEvent 來添加監聽函數,可以添加多個監聽函數,會按順序依次執行。
DOM2 級事件模型,在該事件模型中,一次事件共有三個過程,第一個過程是事件捕獲階段。捕獲指的是事件從 document 一直向下傳播到目標元素,依次檢查經過的節點是否綁定了事件監聽函數,如果有則執行。后面兩個階段和 IE 事件模型的兩個階段相同。這種事件模型,事件綁定的函數是addEventListener,其中第三個參數可以指定事件是否在捕獲階段執行。