【翻譯作品】JavaScript Event學習第二章:Event

來源:互聯網
上載者:User

      在這一章我將對重要的事件做一個概述,包括一些流行的瀏覽器的相容性問題。
      在這裡提出的事件,當他們發生在一個確定的HTML元素上的時候,他們的名字能夠被大多數的瀏覽器所識別。也就是說,瀏覽器會尋找你為這個HTML元素所註冊的事件處理常式的指令碼,而且會被立即執行。
      一開始只有為數很少的一些事件。這些事件在幾乎所有的JavaScript瀏覽器都能運行,即使是那些非常古老的。需要注意的是那些早期的事件只能工作在連結或者表單上,有時候也能運行在整個視窗上,但是其他的大多數HTML元素不行。
      時代變遷,很多新的事件也給大家介紹過了。第四代瀏覽器和更進階的瀏覽器允許事件註冊在任何的HTML元素上。
      所以你基本上可以在任何元素上綁定任何事件,雖然在<P>上綁定一個keydown沒有什麼意義。
      在這裡查看完整的瀏覽器事件相容性列表。

介面事件(Interface events)

      介面事件不是被使用者動作觸發的,而是被使用者行為結果觸發。
      使用者在任何元素上單擊都會觸發一個click時間。當點擊發生在有特殊含義的元素上的時候,額外的介面事件就會被觸發。
      例如,當使用者在一個連結上單擊就觸發了click時間。單擊這個連結一個新的頁面就會被裝載,所以這個特殊的click事件導致了介面事件unload的觸發。
      其他的介面事件還有resize,scroll和focus/blur。

滑鼠事件(mouse events)

      從Netscape 2開始,所有的瀏覽器都注意到了這樣兩個事實。當滑鼠劃入一個連結地區,那麼mouseover事件就觸發了。當他點擊了這個連結那麼click事件觸發。不久之後mouseout也被添加了進去,他會在滑鼠離開連結地區的時候觸發。因此傳統的滑鼠事件三合會(Traditional Triad)成立了。
      第三代的瀏覽器對於滑鼠事件進行了一些擴充。dbclick添加了進來,click事件分割成了mousedown和mouseup:使用者按下和彈起滑鼠按鍵。最後跟蹤鼠
標軌跡的mousemove也變成了可能
      在後面的章節會詳細講解滑鼠事件(mouse event)。

表單事件(Form events)

      表單能夠識別submit和reset事件,submit在使用者提交表單的時候觸發reset在重設表單的時候觸發。其中submit事件是所有表單驗證代碼的核心。當使用者提交表單的時候,就遍曆一遍表單檢查是否有不正確的資料。如果發現了一個錯誤,停止提交表單並向使用者發出一個警告。
      表單還能在某一項得到或者失去焦點的時候識別focus和blur事件,還有鍵盤事件和click事件。可以查看其他的相容性列表。
      一般情況下使用這些事件的時候要小心。當使用者離開表單中的某一項的時候完全可以用onblur來驗證資料,但是通常這都很煩人。使用者在忙著填表單的時候不想看見任何彈出來的提示。

W3C事件(W3C events)

      在W3C的DOM 2 事件規範中  還定義了一些突發事件(Mutation events)。這些事件在文檔的DOM結構發生變化的時候觸發。最常見的一個就是DOMSubtreeModified事件,它會在DOM發生變化的時候觸發。
      Mozilla將這個事件設定為subtreemodified。Mozilla也不支援其他的我們沒有提到的w3c事件。

微軟事件(Microsoft events)

      微軟創造了一大堆事件。有一些是非常有趣的。
      當使用者在任何時候單擊滑鼠右鍵的時候就會觸發comtextmenu事件。這非常有用以致濫用。Mozilla也支援這個事件。
      當匯入XML檔案的時候,readystatechange事件就像一些load事件一樣提供服務。當XML文檔的readyState變成4的時候,文檔就載入完畢了。(不要問我什麼是readyState,他管用而且夠用)
      讓人驚奇的是在unload事件發生之前還有beforeunload事件。他設計的目的是用來取消關閉頁面,但是確沒人在乎。
      最後微軟還發明了mouseenter和mouseleave事件,這兩個幾乎和mouseover合mouseout事件一樣。在滑鼠事件一章查看。
      當然以上事件只被IE支援。

Mozilla事件(Mozilla events)

      Mozilla,當然也有一大堆自己的事件。我還沒有仔細的研究。

事件處理常式

      所有的事件無論何時觸發都會被瀏覽器檢測到。瀏覽器通常也會執行預設的程式,就像當使用者點擊一個連結的時候。但是有時候什麼也不會發生。

      事件處理常式的重點在於你可以讓其他事情發生。你可以在事件發生的時候讓瀏覽器執行你的指令碼。如果你這樣寫了那麼無論何時只要事件發生那麼你的指令碼就會執行。如果這些指令碼在符合邏輯的基礎上能非常的有用,那麼你的使用者也會非常的愉快。

      為了確保你的指令碼在事件觸發的時候能夠執行,你需要對HTML元素的確定的動作進行事件註冊,就像下面這樣:

       <a href="somewhere.html" onClick="alert('I\'ve been clicked!')">

      這樣指令碼裡的alert('I\'ve been clicked!')就會在click事件發生的時候執行。這就註冊了一個事件處理常式。

 

繼續

      如果你要繼續學習,那麼請看下一章。

 

      原文地址:http://www.quirksmode.org/js/events_events.html

       第一次翻譯 大家多多包含。我的twitter:@rehawk

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.