JavaScript中的事件處理

來源:互聯網
上載者:User

事件處理概述
   事件處理是對象化編程的一個很重要的環節,沒有了事件處理,程式就會變得很死,缺乏靈活性。事件處理的過程可以這樣表示:發生事件 - 啟動事件處理常式 - 事件處理常式作出反應。其中,要使事件處理常式能夠啟動,必須先告訴對象,如果發生了什麼事情,要啟動什麼處理常式,否則這個流程就不能進行下去。事件的處理常式可以是任意 JavaScript 語句,但是我們一般用特定的自訂函數(function)來處理事情。
指定事件處理常式有三種方法:
方法一 直接在 HTML 標籤中指定。這種方法是用得最普遍的。方法是:
<標記 ... ... 事件="事件處理常式" [事件="事件處理常式" ...]>

讓我們來看看例子:
<body ... onload="alert('網頁讀取完成,請慢慢欣賞!')" onunload="alert('再見!')">

這樣的定義<body>標記,能使文檔讀取完畢的時候彈出一個對話方塊,寫著“網頁讀取完成,請慢慢欣賞”;在使用者退出文檔(或者關閉視窗,或者到另一個頁面去)的時候彈出“再見”。
方法二 編寫特定對象特定事件的 JavaScript。這種方法用得比較少,但是在某些場合還是很好用的。方法是:
<script language="JavaScript" for="對象" event="事件">
...
(事件處理常式代碼)
...
</script>

<script language="JavaScript" for="window" event="onload">
alert('網頁讀取完成,請慢慢欣賞!');
</script>

方法三 在 JavaScript 中說明。方法:
<事件主角 - 對象>.<事件> = <事件處理常式>;

用這種方法要注意的是,“事件處理常式”是真正的代碼,而不是字串形式的代碼。如果事件處理常式是一個自訂函數,如無使用參數的需要,就不要加“()”。
function ignoreError() {
return true;
}
window.onerror = ignoreError; // 沒有使用“()”

這個例子將 ignoreError() 函數定義為 window 對象的 onerror 事件的處理常式。它的效果是忽略該 window 對象下任何錯誤(由引用不允許訪問的 location 對象產生的“沒有許可權”錯誤是不能忽略的)。

事件詳解

onblur 事件 發生在視窗失去焦點的時候。應用於:window 對象

onchange 事件 發生在文本輸入區的內容被更改,然後焦點從文本輸入區移走之後。捕捉此事件主要用於即時檢測輸入的有效性,或者立刻改變文檔內容。應用於:Password 對象;Select 對象;Text 對象;Textarea 對象

onclick 事件 發生在對象被單擊的時候。單擊是指滑鼠停留在對象上,按下滑鼠鍵,沒有移動滑鼠而放開滑鼠鍵這一個完整的過程。一個普通按鈕對象(Button)通常會有 onclick 事件處理常式,因為這種對象根本不能從使用者那裡得到任何資訊,沒有 onclick 事件處理常式就等於廢柴。按鈕上添加 onclick 事件處理常式,可以類比“另一個提交按鈕”,方法是:在事件處理常式中更改表單的 action, target, encoding, method 等一個或幾個屬性,然後調用表單的 submit() 方法。在 Link 對象的 onclick 事件處理常式中返回 false 值(return false),能阻止瀏覽器開啟此串連。即,如果有一個這樣的串連:<a href="http://www.a.com" onclick="return false">Go!</a>,那麼無論使用者怎樣點擊,都不會去到 www.a.com 網站,除非使用者禁止瀏覽器運行 JavaScript。應用於:Button 對象;Checkbox 對象;Image 對象;Link 對象;Radio 對象;Reset 對象;Submit 對象

onerror 事件 發生在錯誤發生的時候。它的事件處理常式通常就叫做“錯誤處理程式”(Error Handler),用來處理錯誤。上邊已經介紹過,要忽略一切錯誤,就使用:
function ignoreError() {
return true;
}
window.onerror = ignoreError;

應用於:window 對象

onfocus 事件 發生在視窗得到焦點的時候。應用於:window 對象

onload 事件 發生在文檔全部下載完畢的時候。全部下載完畢意味著不但 HTML 檔案,而且包含的圖片,外掛程式,控制項,小程式等全部內容都下載完畢。本事件是 window 的事件,但是在 HTML 中指定事件處理常式的時候,我們是把它寫在<body>標記中的。應用於:window 對象

onmousedown 事件 發生在使用者把滑鼠放在對象上按下滑鼠鍵的時候。參考 onmouseup 事件。應用於:Button 對象;Link 對象

onmouseout 事件 發生在滑鼠離開對象的時候。參考 onmouseover 事件。應用於:Link 對象

onmouseover 事件 發生在滑鼠進入物件範圍的時候。這個事件和 onmouseout 事件,再加片的預讀,就可以做到當滑鼠移到映像串連上,映像更改的效果了。有時我們看到,在指向一個串連時,狀態列上不顯示地址,而顯示其它的資料,看起來這些資料是可以隨時更改的。它們是這樣做出來的:
<a href="..." onmouseover="window.status='Click Me Please!'; return true;" onmouseout="window.status=''; return true;">

應用於:Link 對象

onmouseup 事件 發生在使用者把滑鼠放在對象上滑鼠鍵被按下的情況下,放開滑鼠鍵的時候。如果按下滑鼠鍵的時候,滑鼠並不在放開滑鼠的對象上,則本事件不會發生。應用於:Button 對象;Link 對象

onreset 事件 發生在表單的“重設”按鈕被單擊(按下並放開)的時候。通過在事件處理常式中返回 false 值(return false)可以阻止表單重設。應用於:Form 對象

onresize 事件 發生在視窗被調整大小的時候。應用於:window 對象

onsubmit 事件 發生在表單的“提交”按鈕被單擊(按下並放開)的時候。可以使用該事件來驗證表單的有效性。通過在事件處理常式中返回 false 值(return false)可以阻止表單提交。應用於:Form 對象

onunload 事件 發生在使用者退出文檔(或者關閉視窗,或者到另一個頁面去)的時候。與 onload 一樣,要寫在 HTML 中就寫到<body>標記裡。  有的 Web Masters 用這個方法來彈出“調查表單”,以“強迫”來者填寫;有的就彈出廣告視窗,唆使來者點擊串連。我覺得這種“onunload="open..."”的方法很不好,有時甚至會因為彈出太多視窗而導致資源缺乏。有什麼對來者說就應該在網頁上說完,不對嗎? 應用於:window 對象

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.