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