1. 程式人生 > >二十、事件入門

二十、事件入門

用戶操作 方式 三種 組成 bmi 一個 用戶 mouse fun

二十、事件入門

JavaScript事件是由訪問Web頁面的用戶引起的一系列操作,例如:用戶點擊。當用戶執行某些操作的時候,再去執行一系列代碼。

1.事件介紹

  事件一般是用於瀏覽器和用戶操作進行交互。最早是IE和Netscape Navigator中出現,作為分擔服務器端運算負載的一種手段。直到幾乎所有的瀏覽器都支持事件處理。而DOM2級規範開始嘗試以一種復合邏輯的方式標準化DOM事件。IE9、Firefox、Opera、Safari和Chrome全都已經實現了“DOM2級事件”模塊的核心部分。IE8之前瀏覽器仍然使用其專有事件模型。

JavaScript有三種事件模型:內聯模型、腳本模型和DOM2模型。

2.內聯模型

  這種模型是最傳統接單的一種處理事件的方法。在內聯模型中,事件處理函數是HTML標簽的一個屬性,用於處理指定事件。雖然內聯在早期使用較多,但它是和HTML混寫的,並沒有與HTML分離。

  //在HTML中把事件處理函數作為屬性執行JS代碼

  <input type="button" value="按鈕" onclick="alert(‘Lee‘);" /> //註意單雙引號

  //在HTML中把事件處理函數作為屬性執行JS函數

  <input type="button" value="按鈕" onclick="box();" /> //執行JS的函數

PS:函數不得放到window.onload裏面,這樣就看不見了。

3.腳本模型

由於內聯模型違反了HTML與JavaScript代碼層次分離的原則。為了解決這個問題,我們可以在JavaScript中處理事件。這種處理方式就是腳本模型。

var input = document.getElementsByTagName(‘input‘)[0]; //得到input對象

input.onclick = function () { //匿名函數執行

alert(‘Lee‘);

};

PS:通過匿名函數,可以直接觸發對應的代碼。也可以通過指定的函數名賦值的方式來執行函數(賦值的函數名不要跟著括號)。

  input.onclick = box; //把函數名賦值給事件處理函數

4.事件處理函數

1.JavaScript可以處理的事件類型為:鼠標事件、鍵盤事件、HTML事件。

JavaScript事件處理函數及其使用列表

事件處理函數

影響的元素

何時發生

onabort

圖像

當圖像加載被中斷時

onblur

窗口、框架、所有表單對象

當焦點從對象上移開時

onchange

輸入框,選擇框和文本區域

當改變一個元素的值且失去焦點時

onclick

鏈接、按鈕、表單對象、圖像映射區域

當用戶單擊對象時

ondblclick

鏈接、按鈕、表單對象

當用戶雙擊對象時

ondragdrop

窗口

當用戶將一個對象拖放到瀏覽器窗口時

onError

腳本

當腳本中發生語法錯誤時

onfocus

窗口、框架、所有表單對象

當單擊鼠標或者將鼠標移動聚焦到窗口或框架時

onkeydown

文檔、圖像、鏈接、表單

當按鍵被按下時

onkeypress

文檔、圖像、鏈接、表單

當按鍵被按下然後松開時

onkeyup

文檔、圖像、鏈接、表單

當按鍵被松開時

onload

主題、框架集、圖像

文檔或圖像加載後

onunload

主體、框架集

文檔或框架集卸載後

onmouseout

鏈接

當圖標移除鏈接時

onmouseover

鏈接

當鼠標移到鏈接時

onmove

窗口

當瀏覽器窗口移動時

onreset

表單復位按鈕

單擊表單的reset按鈕

onresize

窗口

當選擇一個表單對象時

onselect

表單元素

當選擇一個表單對象時

onsubmit

表單

當發送表格到服務器時

PS:所有的事件處理函數都會都有兩個部分組成,on + 事件名稱,例如click事件的事件處理函數就是:onclick。在這裏,我們主要談論腳本模型的方式來構建事件,違反分離原則的內聯模式,我們忽略掉。

對於每一個事件,它都有自己的觸發範圍和方式,如果超出了觸發範圍和方式,事件處理將失效。

2.鼠標事件,頁面所有元素都可觸發

click:當用戶單擊鼠標按鈕或按下回車鍵時觸發。

input.onclick = function () {

alert(‘Lee‘);

};

dblclick:當用戶雙擊主鼠標按鈕時觸發。

input.ondblclick = function () {

alert(‘Lee‘);

};

mousedown:當用戶按下了鼠標還未彈起時觸發。

input.onmousedown = function () {

alert(‘Lee‘);

};

mouseup:當用戶釋放鼠標按鈕時觸發。

input.onmouseup = function () {

alert(‘Lee‘);

};

mouseover:當鼠標移到某個元素上方時觸發。

input.onmouseover = function () {

alert(‘Lee‘);

};

mouseout:當鼠標移出某個元素上方時觸發。

input.onmouseout = function () {

alert(‘Lee‘);

};

mousemove:當鼠標指針在元素上移動時觸發。

input.onmousemove = function () {

alert(‘Lee‘);

};

3.鍵盤事件

keydown:當用戶按下鍵盤上任意鍵觸發,如果按住不放,會重復觸發。

onkeydown = function () {

alert(‘Lee‘);

};

keypress:當用戶按下鍵盤上的字符鍵觸發,如果按住不放,會重復觸發。

onkeypress = function () {

alert(‘Lee‘);

};

keyup:當用戶釋放鍵盤上的鍵觸發。

onkeyup = function () {

alert(‘Lee‘);

};

4.HTML事件

load:當頁面完全加載後在window上面觸發,或當框架集加載完畢後在框架集上觸發。

window.onload = function () {

alert(‘Lee‘);

};

unload:當頁面完全卸載後在window上面觸發,或當框架集卸載後在框架集上觸發。

window.onunload = function () {

alert(‘Lee‘);

};

select:當用戶選擇文本框(input或textarea)中的一個或多個字符觸發。

input.onselect = function () {

alert(‘Lee‘);

};

change:當文本框(input或textarea)內容改變且失去焦點後觸發。

input.onchange = function () {

alert(‘Lee‘);

};

focus:當頁面或者元素獲得焦點時在window及相關元素上面觸發。

input.onfocus = function () {

alert(‘Lee‘);

};

blur:當頁面或元素失去焦點時在window及相關元素上觸發。

input.onblur = function () {

alert(‘Lee‘);

};

submit:當用戶點擊提交按鈕在<form>元素上觸發。

form.onsubmit = function () {

alert(‘Lee‘);

};

reset:當用戶點擊重置按鈕在<form>元素上觸發。

form.onreset= function () {

alert(‘Lee‘);

};

resize:當窗口或框架的大小變化時在window或框架上觸發。

window.onresize = function () {

alert(‘Lee‘);

};

scroll:當用戶滾動帶滾動條的元素時觸發。

window.onscroll = function () {

alert(‘Lee‘);

};

二十、事件入門