事件處理
客戶端js程序采用異步事件驅動編程模型。在這種情況下當文檔,瀏覽器,元素發生一些事情的時候,會產生事件。
舉例 當瀏覽器加載完文檔以后會觸發一個事件。該事件會有一個函數進行處理,即回調函數
這種只不單單用于web界面,所有使用圖形界面的應用程序都采用了這種方式。
事件類型 事件分類 依賴于設備的輸入事件有些事件和特定輸入設備直接相關。比如鼠標和鍵盤。
touchmove 當觸點在觸控平面上時發生該事件獨立于設備的輸入事件
click事件表示激活了鏈接的事件。通過鼠標,按鈕或者移動設備上的觸摸觸發該事件
用戶界面事件通常用于HTML表單元素,包括文本輸入域獲取鍵盤焦點的focus事件,提交按鈕將會觸發submit事件
狀態變化事件不是由用戶活動由網絡或者瀏覽器活動觸發,表示某種生命周期或相關狀態的變化。
online 返回瀏覽器的聯網狀態特定的api事件
一些web api會有自己的事件類型
拖放的api dragstart 當用戶拖動一個元素,或者選擇一個文本的時候觸發該事件
計時器在指定的時間后觸發該事件,錯誤處理程序,try catch 對應于一個響應,會有異步進行拋出
傳統事件類型 表單事件當提交表單和重置表單時會觸發submit和reset事件,當用戶和類按鈕(包括單選和復選)交互的時,將會發生click事件,當用戶輸入文字,選擇選項或選擇復選框改變相應的表單元素的狀態時,將會觸發change事件,通過鍵盤改變焦點的表單元素在得到和失去焦點時將會觸發focus和blur事件。
通過事件處理程序能取消submit和reset事件的默認操作。某些click事件也是如此,focus和clur事件不會冒泡,但其他所有表單事件都可以。
無論用戶何時輸入文字,都會觸發input事件。
window事件是指事件的發生與瀏覽器窗口本身而非窗口中顯示的任何特定文檔內容相關。
load事件load事件與文檔和其所有外部資源(圖片)完全加載并顯示給用戶時將會觸發。
unload事件unload事件,當用戶離開當前文檔轉向其他文檔時將會觸發。
unload事件處理程序可以用于保存用戶的狀態,但其不能取消用戶轉向其他地方。
此事件將會詢問用戶是否確定離開當前頁面。如果beforeunload的回調函數返回一個字符串,那么在新頁面加載之前,字符串將會出現在展示給用戶確認的對話框上,這樣用戶將會有機會取消跳轉停留在當前頁上
注意;該事件僅僅是在當前頁面的跳轉更改等,轉換標簽不會觸發該事件onerror屬性
此為一個window對象的屬性。在js出錯的時候將會觸發其
其他像img元素這樣的替換元素也能為其注冊load和error事件處理程序。當外部資源完全加載或發生阻塞加載錯誤時將會觸發該事件。某些瀏覽器也支持about事件,當圖強因為用戶停止加載進程而導致失敗的時候也會觸發該事件。
focus和blur事件也為window事件,當瀏覽器窗口從操作系統中得到或失去鍵盤焦點的時候將會觸發該事件
當用戶調整瀏覽器窗口大小或滾動其會觸發resize和scroll事件,scroll事件也能在任何可以滾動的文檔元素上觸發,例如css的的overflow屬性也能觸發。
當用戶在文檔上移動和單擊鼠標時都會產生鼠標事件。這些事件在鼠標指針所對應的最深嵌套元素上觸發。但其會冒泡直到文檔的最頂層。
clientX和clientY屬性指定了鼠標在窗口坐標中的位置。button和which屬性指定了按下的鼠標鍵是哪個。
當鼠標輔助鍵按下的時候,對應的屬性為altkey和ctrlkey和metakey和shiftkey會設置為true,對于click事件,detail屬性指定了其是單擊,雙擊,還是三擊。
每當用戶移動和拖動鼠標時,會觸發mousemove事件,當用戶按下或釋放鼠標按鍵的時候觸發mousedown和mouseup事件。
在mousedown和mouseup事件隊列之后,瀏覽器也會觸發click事件,如果用戶在很短的時間內單擊兩次鼠標,則第二個事件為dblclic事件,當單擊鼠標右鍵時,瀏覽器會顯示上下文菜單,在顯示菜單之前,也會觸發contextmenu事件,如果取消這個事件將會阻止菜單的顯示,該事件為獲得鼠標右擊通知的最簡單方法。
當用戶移動鼠標指針從而使它懸停到新元素上時,瀏覽器就會在該元素上觸發mouseover事件,當鼠標移動指針從而使它不在懸停在某個元素上時,瀏覽器會觸發mouseout事件,(該事件有relatedTarget屬性指明這個過程涉及的其他元素)
當用戶滾動鼠標的時候,瀏覽器觸發mousewheel事件,傳遞事件對象屬性指定輪子轉動的大小和方向。
當鍵盤聚焦到web瀏覽器時,用戶每次按下或釋放鍵盤上的按鍵時都會產生事件,鍵盤快捷鍵葉同樣能被瀏覽器和操作系統吃掉,此時對js事件處理程序不可見,無論任何文檔元素獲取鍵盤焦點都會觸發鍵盤事件,并會冒泡到window對象,
觸摸屏和移動設備事件用戶旋轉設備的時會產生orientationchange事件,有一個縮放和旋轉手勢,當手勢開始時將會生成getsturestart事件,手勢結束時將會生成gestureend事件。在這兩個事件之間是跟蹤手勢過程的gesturechange事件隊列,將事件傳遞的事件對象屬性為scale和rotation
握緊手勢的scale值小于1.0
撐開手勢的scale的值大于1.0
rotation為事件開始時手指旋轉的角度。以度為單位正值表示順時針方向旋轉
當手指觸摸屏幕的時候將會觸發touchstart事件,當手指移動時會觸發touchmove事件,當手指離開屏幕時會觸發touchend事件,觸摸事件傳遞的事件對象有一個changedTouches屬性,該屬性為一個類數組對象,其每個元素都描述觸摸的位置。
當設備允許用戶從豎屏旋轉到橫屏模式時會在window對象上觸發orientationchanged事件。該對象的orientation屬性能給出當前方位,其值為0, 90, 180, 或 -90
注冊事件處理程序給事件目標對象或文檔元素設置屬性
將事件處理程序傳遞給對象或文檔元素的一個方法
設置js對象屬性為事件處理程序事件處理程序屬性的名字由on后面跟著事件名組成。onclick,onchange,onload,onmouseover
onload 當對象的資源被加載的時候,該對象的onload事件將會被觸發,然后將表單的提交的onsubmit事件和一個處理函數進行綁定
onsubmit 在表單提交的時候,將會觸發該事件
下方栗子演示一個提交的時候表單驗證的過程
其中validate函數為一個自定義的表單驗證函數,其函數的參數this指向elt
window.onload = () => { // 查找一個
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/96878.html
摘要:指定事件處理程序指定事件處理程序主要有兩種方式級事件處理程序級事件處理程序。添加事件處理程序注意這里是哦或移除事件處理程序使用移除事件處理程序的條件與方法相同必須提供相同的參數,從而添加的匿名函數也無法被移除。 今天看書又看到事件,遂決定小總結一下~ JavaScript與HTML之間的交互是通過事件實現的。事件,就是文檔或瀏覽器窗口中發生的一些特定的交互瞬間。可以使用監聽器(事件處...
摘要:指定事件處理程序指定事件處理程序主要有兩種方式級事件處理程序級事件處理程序。添加事件處理程序注意這里是哦或移除事件處理程序使用移除事件處理程序的條件與方法相同必須提供相同的參數,從而添加的匿名函數也無法被移除。 今天看書又看到事件,遂決定小總結一下~ JavaScript與HTML之間的交互是通過事件實現的。事件,就是文檔或瀏覽器窗口中發生的一些特定的交互瞬間。可以使用監聽器(事件處...
摘要:事件捕獲團隊提出的,與事件冒泡相反。事件處理程序事件用戶或瀏覽器自身執行的某種動作。事件處理程序響應某個事件的函數。事件委托目的解決事件處理程序過多問題。流程創建事件對象初始化事件對象觸發事件 事件是將JavaScript與網頁聯系在一起的主要方式。 事件流 事件流:從頁面中接收到事件的順序。 事件冒泡 IE的事件流叫做事件冒泡:事件開始時由最具體 的元素(文檔中嵌套層次最深的那個節點...
摘要:但是通過添加的匿名函數無法移除,最好是在其他地方定義事件處理程序的函數,然后將該函數的名稱傳給第二個參數。一中的事件對象對象兼容級和級的瀏覽器將對象傳入到事件處理程序中。 一、事件流 假設有如下HTML代碼: Event Click me 其DOM樹如下圖所示:showImg(https://segmentfault.com/img/bVUUWA?w=50...
摘要:提出的事件流是事件冒泡流,提出的事件流是事件捕獲流。事件冒泡流事件開始時,由最具體的元素文檔中嵌套層次最深的哪個節點接收,逐級上傳到最不具體的元素文檔。事件處理程序,級事件處理程序,級事件處理程序,事件處理程序。 事件 綱要 理解事件流 使用事件處理程序 不同的事件類型 javascript和html的交互是通過事件實現的。事件就是文檔或瀏覽器窗口發生的一些特定交互瞬間。可以使用偵...
閱讀 3692·2021-09-07 10:19
閱讀 3637·2021-09-03 10:42
閱讀 3591·2021-09-03 10:28
閱讀 2559·2019-08-29 14:11
閱讀 816·2019-08-29 13:54
閱讀 1603·2019-08-29 12:14
閱讀 423·2019-08-26 12:12
閱讀 3621·2019-08-26 10:45