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