事件類型
傳統(tǒng)事件類型
- 表單事件
- 當(dāng)提交表單和重置表單時(shí),<form>元素會(huì)分別觸發(fā)submit和reset事件。
- 當(dāng)用戶和類按鈕表單元素(包括單選按鈕和復(fù)選框)交互時(shí),會(huì)發(fā)生click事件。
- 當(dāng)用戶通過輸入文字、選擇選項(xiàng)或選擇復(fù)選框來改變相應(yīng)表單元素的狀態(tài)時(shí),會(huì)觸發(fā)change事件。
- window事件
- unload事件:當(dāng)用戶離開當(dāng)前文檔轉(zhuǎn)向其他文檔時(shí)會(huì)觸發(fā)它。
- load事件:當(dāng)文檔和其所有外部資源完全加載并顯示給用戶時(shí)就會(huì)觸發(fā)它。
- onerror:當(dāng)JavaScript出錯(cuò)時(shí)觸發(fā)。
- 當(dāng)用戶調(diào)整瀏覽器窗口大小或滾動(dòng)它時(shí)會(huì)觸發(fā)resize和scroll事件。
- 鼠標(biāo)事件
- 移動(dòng)鼠標(biāo),觸發(fā)mousemove事件。
- 按下鼠標(biāo),觸發(fā)mousedown事件。
- 釋放鼠標(biāo),觸發(fā)mouseup事件。
- 在mousedown和mouseup事件隊(duì)列之后,會(huì)觸發(fā)click事件。
- 雙擊鼠標(biāo),跟在第二個(gè)click事件之后的是dblclick事件。
- 右擊鼠標(biāo),在顯示菜單之前,先觸發(fā)contextmenu事件,取消這個(gè)事件就可以阻止菜單的顯示。
- 移動(dòng)鼠標(biāo)懸停在新元素上時(shí),觸發(fā)mouseover事件。
- 移出鼠標(biāo),觸發(fā)mouseout事件。
- 鍵盤事件
- 按下按鍵,觸發(fā)keydown。
- 釋放按鍵,觸發(fā)keyup。
- keydown事件產(chǎn)生可打印字符時(shí),在keydown和keyup之間會(huì)觸發(fā)keypress,其事件對象指定產(chǎn)生的字符而非按下的鍵。
DOM事件
wheel事件的處理程序接收到的事件對象除了所有普通鼠標(biāo)事件屬性,還有deltaX、deltaY和deltaZ屬性來報(bào)告三個(gè)不同的鼠標(biāo)滾軸。
觸摸屏和移動(dòng)設(shè)備事件
- Safari產(chǎn)生的手勢事件用于兩個(gè)手指的縮放和旋轉(zhuǎn)手勢。當(dāng)手勢開始時(shí)生成gesturestart事件,而手勢結(jié)束時(shí)生成gestureend事件。
- 兩個(gè)事件之間是跟蹤手勢過程的gesturechange事件隊(duì)列。
- 事件對象有數(shù)字屬性scale和rotation。
- scale:兩個(gè)手指之間當(dāng)前距離和初始距離的比值。“捏緊”手勢的scale值小于1.0,“撐開”手勢的scale值大于1.0.
- rotation:指從事件開始手指旋轉(zhuǎn)的角度,以度為單位,順時(shí)針旋轉(zhuǎn)為正值。
- 手指觸摸屏幕觸發(fā)touchstart事件,手指移動(dòng)觸發(fā)touchmove事件,手指離開屏幕觸發(fā)touchend事件。
- 觸摸事件傳遞的事件對象有一個(gè)changedTouches屬性,該屬性是一個(gè)類數(shù)組對象,其每個(gè)元素都描述觸摸的位置。
- 豎屏轉(zhuǎn)到橫屏模式時(shí)會(huì)在window對象上觸發(fā)orientationchanged事件。
- 移動(dòng)版的Safari中,window對象的orientation屬性可以給出當(dāng)前方位,其值是0、 90、 180或-90 。
注冊事件處理程序
設(shè)置JavaScript對象屬性為事件處理程序
按照約定,事件處理程序?qū)傩缘拿钟伞皁n”后面跟著事件組成。(略)
設(shè)置HTML標(biāo)簽屬性為事件處理程序
(略)
addEventListener()
- 該函數(shù)接受三個(gè)參數(shù)
- 第一個(gè)是要注冊處理程序的事件類型,是字符串。
- 第二個(gè)是當(dāng)指定類型的事件發(fā)生時(shí)應(yīng)該調(diào)用的函數(shù)。
- 第三個(gè)是布爾值。傳遞true時(shí),函數(shù)將注冊為捕獲事件處理程序,并在事件不同的調(diào)度階段調(diào)用。一般傳遞false
removeEventListener()方法
- 該函數(shù)同樣有三個(gè)參數(shù)
attachEvent()
- attachEvent()和detachEvent()方法的工作原理同上述兩個(gè)類似,但有如下例外:
- 因IE事件模型不支持事件捕獲,只有兩個(gè)參數(shù):事件類型和處理程序函數(shù)。
- 第一個(gè)參數(shù)要帶有“on”前綴。
- attachEvent()允許相同的事件處理程序函數(shù)注冊多次。
鼠標(biāo)事件

鼠標(biāo)事件
鼠標(biāo)滾輪事件
可以通過取消mousewheel事件來阻止使用鼠標(biāo)滾動(dòng)時(shí)的默認(rèn)操作。
- 傳遞給mousewheel處理程序的事件對象有wheelDelta屬性,其指定用戶滾動(dòng)滾輪有多遠(yuǎn)。
- 遠(yuǎn)離用戶方向的一次鼠標(biāo)滾輪“單擊”的wheelDelta值通常為120.
- 接近用戶方向的為-120.