事件

技術(shù)一般水平有限,有什么錯的地方,望大家指正。

事件就是用戶和瀏覽器交互的一種途徑。假如一個用戶注冊的功能,我們在填寫完基本信息之后,點(diǎn)擊提交按鈕就可以實(shí)現(xiàn)注冊功能,要想完成這個功能所需要的就是點(diǎn)擊事件。我們預(yù)先定義好操作行為,在用戶點(diǎn)擊提交按鈕時就執(zhí)行我們預(yù)先定好的行為,在本例中我們的代碼邏輯一般就是收集用戶填寫信息,驗證信息合法性,利用AJAX與服務(wù)器交互。

這個過程就好像我們平時封裝函數(shù)然后調(diào)用函數(shù)一樣,事件其實(shí)也就類似函數(shù)定義函數(shù)調(diào)用這樣的一個過程,只不過事件函數(shù)的調(diào)用是由用戶的一些操作來告知瀏覽器,讓瀏覽器在去調(diào)用函數(shù)的。

首先瀏覽器已經(jīng)給我們提供了一列的事件,包括click,keydown等等,為什么還需要自定義事件呢?其實(shí)就是對我們的行為進(jìn)行更準(zhǔn)確的描述。以上面的用戶注冊為例我們可以定義一個名為saveMessage的事件,在點(diǎn)擊提交按鈕時觸發(fā)這個事件,好像看起來更加直觀一些,不過這看起來和普通的函數(shù)調(diào)用沒什么區(qū)別,仔細(xì)想了想函數(shù)調(diào)用和事件觸發(fā)的區(qū)別就是由我們自己執(zhí)行的函數(shù)就是函數(shù)調(diào)用,不是由我們執(zhí)行的函數(shù)就是事件觸發(fā)。看下面的代碼:

復(fù)制代碼
window.onload = function(){ var demo = document.getElementById("demo");
    demo.onclick = handler; function handler(){
        console.log("aaa");
    }
}
復(fù)制代碼

在我們點(diǎn)擊按鈕的時候就會打印aaa,而且很明顯的可以看出函數(shù)并不是由我們調(diào)用的而是由瀏覽器來執(zhí)行的,如果我們直接調(diào)用函數(shù)handler()一樣可以打印aaa但這是由我們調(diào)用的所以