JavaScript--事件(上)

一、事件的概述

1、JavaScript 與 HTML 的交互是通過(guò)事件實(shí)現(xiàn)的,事件代表文檔或?yàn)g覽器窗口中某個(gè)有意義的時(shí)刻??梢允褂脙H在事件發(fā)生時(shí)執(zhí)行的監(jiān)聽(tīng)器(也叫處理程序)訂閱事件。
2、事件意味著用戶或?yàn)g覽器執(zhí)行的某種動(dòng)作。比如,單擊(click)、加載(load)、鼠標(biāo)懸停(mouseover)。為響應(yīng)事件而調(diào)用的函數(shù)被稱為事件處理程序(或事件監(jiān)聽(tīng)器)。事件處理程序的名字以"on"開(kāi)頭,因此 click 事件的處理程序叫作 onclick,而 load 事件的處理程序叫作 onload。

二、事件的模式

JavaScript有兩種事件實(shí)現(xiàn)模式: 內(nèi)聯(lián)模式, 腳本模式。

1、內(nèi)聯(lián)模式

直接在HTML標(biāo)簽中添加事件。這種模式是最傳統(tǒng)簡(jiǎn)單的一種處理事件的方法。但是這種模式中事件和HTML是混寫的, 并沒(méi)有將JS與HTML分離, 當(dāng)代碼量多了以后,對(duì)后期代碼維護(hù)和擴(kuò)展很不利。

<input type="button" value="按鈕" onclick="alert('hello');" /> 
2、腳本模式

使用腳本模式我們需要先獲取到元素節(jié)點(diǎn)對(duì)象, 再針對(duì)該節(jié)點(diǎn)對(duì)象添加事件。

var box = document.getElementById('box'); 
box.onclick = function() {  //給box節(jié)點(diǎn)對(duì)象添加點(diǎn)擊事件onclick
         console.log('Hello world!'); 
};

注意:內(nèi)聯(lián)里面調(diào)用的方法的this會(huì)指向window(傳遞this)腳本模式的this會(huì)指向當(dāng)前的調(diào)用者。

三、事件的分類

1、鼠標(biāo)事件

1.1 click事件

在用戶單擊鼠標(biāo)主鍵(通常是左鍵)或按鍵盤回車鍵時(shí)觸發(fā)。
注意:“鼠標(biāo)單擊”定義為,用戶在同一個(gè)位置完成一次mousedown動(dòng)作和mouseup動(dòng)作。它們的觸發(fā)順序是:mousedown首先觸 發(fā),mouseup接著觸發(fā),click最后觸發(fā)。

1.2 dblclick事件

在用戶雙擊鼠標(biāo)主鍵(通常是左鍵)時(shí)觸發(fā)。

1.3 mousemove事件

在鼠標(biāo)光標(biāo)在元素上移動(dòng)時(shí)反復(fù)觸發(fā)。

1.4 mouseover事件

在用戶把鼠標(biāo)光標(biāo)從元素外部移到元素內(nèi)部時(shí)觸發(fā)。

1.5 mouseout事件

在用戶把鼠標(biāo)光標(biāo)從一個(gè)元素移到另一個(gè)元素上時(shí)觸發(fā)。移到的元素可以是原始元素的外部元素,也可以是原始元素的子元素。

1.6 mouseenter事件

在用戶把鼠標(biāo)光標(biāo)從元素外部移到元素內(nèi)部時(shí)觸發(fā)。不會(huì)在光標(biāo)經(jīng)過(guò)后代元素時(shí)觸發(fā)。

1.7 mouseleave事件

在用戶把鼠標(biāo)光標(biāo)從元素內(nèi)部移到元素外部時(shí)觸發(fā)。也不會(huì)在光標(biāo)經(jīng)過(guò)后代元素時(shí)觸發(fā)

1.8 mousedown事件

在用戶按下任意鼠標(biāo)鍵時(shí)觸發(fā)。

1.9 mouseup事件

在用戶釋放鼠標(biāo)鍵時(shí)觸發(fā)。

1.10 contextmenu事件

contextmenu事件在一個(gè)節(jié)點(diǎn)上點(diǎn)擊鼠標(biāo)右鍵時(shí)觸發(fā),或者按下“上下文菜單”鍵時(shí)觸發(fā)。

document.oncontextmenu=function(){ return false; }

2、鍵盤事件

2.1 keydown事件

用戶按下鍵盤上某個(gè)鍵時(shí)觸發(fā),而且持續(xù)按住會(huì)重復(fù)觸發(fā)。

2.2 keyup事件

用戶釋放鍵盤上某個(gè)鍵時(shí)觸發(fā)。

2.3 keypress事件

用戶按下鍵盤上某個(gè)鍵并產(chǎn)生字符時(shí)觸發(fā),而且持續(xù)按住會(huì)重復(fù)觸發(fā)。Esc 鍵也會(huì)觸發(fā)這個(gè)事件。(非Ctrl、Alt、Shift和Meta

注意:keypress和textinput事件是在新輸入的文本真正插入到聚焦的文檔元素前觸發(fā)的。 如果用戶一直按鍵不松開(kāi),就會(huì)重復(fù)觸發(fā)keydown、keypress,直到用戶松開(kāi)才會(huì)觸發(fā)keyup。

3、HTML事件

3.1 load事件

在 window 對(duì)象上,load 事件會(huì)在整個(gè)頁(yè)面(包括所有外部資源如圖片、JavaScript 文件和 CSS 文件)加載完成后觸發(fā)。

3.2 unload事件

unload 事件會(huì)在文檔卸載完成后觸發(fā)。unload 事件一般是在從一個(gè)頁(yè)面導(dǎo)航到另一個(gè)頁(yè)面時(shí)觸發(fā),最常用于清理引用,以避免內(nèi)存泄漏。

3.3 close事件

當(dāng)窗口關(guān)閉是觸發(fā)。

3.4 change事件

當(dāng) <input> 、 <select> 和 <textarea> 的值發(fā)生變化時(shí)都會(huì)觸發(fā)change事件。只有全部修改完成時(shí)它才會(huì)觸發(fā)。

具體分下面幾種情況

  • 激活單選框(radio)或復(fù)選框(checkbox)時(shí)觸發(fā)。
  • 用戶提交時(shí)觸發(fā)。比如,從下列列表(select)完成選擇,在日期或文件輸入框完成選擇。
  • 當(dāng)文本框或textarea元素的值發(fā)生改變,并且喪失焦點(diǎn)時(shí)觸發(fā)
3.5 select事件

在文本框(<input>或 textarea)上當(dāng)用戶選擇了一個(gè)或多個(gè)字符時(shí)觸發(fā)。

3.6 focus事件

當(dāng)元素獲得焦點(diǎn)時(shí)觸發(fā)。

3.7 blur事件

當(dāng)元素失去焦點(diǎn)時(shí)觸發(fā)。

3.8 reset事件

當(dāng)表單重置(所有表單成員的值變回默認(rèn)值)時(shí)觸發(fā)。

3.9 submit事件

當(dāng)表單數(shù)據(jù)向服務(wù)器提交時(shí)觸發(fā)。

注意:submit事件的發(fā)生對(duì)象是form元素,而不是button元素(即使它的類型是submit),因?yàn)樘峤坏氖潜韱危皇前?鈕

3.10 scorll事件

當(dāng)用戶滾動(dòng)包含滾動(dòng)條的元素時(shí)在元素上觸發(fā)。<body>元素包含已加載頁(yè)面的滾動(dòng)條。大多數(shù) HTML 事件與 window 對(duì)象和表單控件有關(guān)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容