學習筆記四|事件處理

事件類型

傳統事件類型

  1. 表單事件
  • 當提交表單和重置表單時,<form>元素會分別觸發submit和reset事件。
  • 當用戶和類按鈕表單元素(包括單選按鈕和復選框)交互時,會發生click事件。
  • 當用戶通過輸入文字、選擇選項或選擇復選框來改變相應表單元素的狀態時,會觸發change事件。
  1. window事件
  • unload事件:當用戶離開當前文檔轉向其他文檔時會觸發它。
  • load事件:當文檔和其所有外部資源完全加載并顯示給用戶時就會觸發它。
  • onerror:當JavaScript出錯時觸發。
  • 當用戶調整瀏覽器窗口大小或滾動它時會觸發resize和scroll事件。
  1. 鼠標事件
  • 移動鼠標,觸發mousemove事件。
  • 按下鼠標,觸發mousedown事件。
  • 釋放鼠標,觸發mouseup事件。
  • 在mousedown和mouseup事件隊列之后,會觸發click事件。
  • 雙擊鼠標,跟在第二個click事件之后的是dblclick事件。
  • 右擊鼠標,在顯示菜單之前,先觸發contextmenu事件,取消這個事件就可以阻止菜單的顯示。
  • 移動鼠標懸停在新元素上時,觸發mouseover事件。
  • 移出鼠標,觸發mouseout事件。
  1. 鍵盤事件
  • 按下按鍵,觸發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.
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 總結: 鼠標事件 1.click與dbclick事件$ele.click()$ele.click(handler(...
    阿r阿r閱讀 1,640評論 2 10
  • 第1章 鼠標事件 1-1 jQuery鼠標事件之click與dbclick事件 用交互操作中,最簡單直接的操作就是...
    mo默22閱讀 1,304評論 0 6
  • (續jQuery基礎(1)) 第5章 DOM節點的復制與替換 (1)DOM拷貝clone() 克隆節點是DOM的常...
    凜0_0閱讀 1,364評論 0 8
  • 事件流 IE和Netscape開發團隊提出了完全相反的兩種事件流的概念,事件冒泡流和事件捕獲流。 事件冒泡 事件由...
    exialym閱讀 987評論 0 9
  • 開發中的很多開源項目可以通過Pod導入自己的項目中,過程其實很簡單,網上的博客說的天花亂墜的,簡單描述一下過程,希...
    FlyElephant閱讀 955評論 0 1