JavaScript之事件流

JavaScript和HTML之間的交互是通過用戶和瀏覽器操作頁面時引發的事件來處理的。頁面載入完成時,會出現一個事件。用戶點擊按鈕時,點擊也是一個事件。開發人員用這些事件來執行編碼進行響應。JavaScript通過將一些功能在客戶商用實現來節省返回服務器的時候。完整的事件是在DOM Level3中規定的。該標準在2004年最終定案。
  什麼是事件流呢?事件流意味着在頁面上可有不僅一個,甚至多少元素響應同一個事件。點擊頁面上的按鈕時,會發生什麼?實際上,是點擊了按鈕、它的容器及整個頁面。從邏輯上說,每一個元素都按照特定的順序響應那個事件。
(一) 冒泡型事件
       IE上的解決方案是綽號爲冒泡的技術。冒泡型事件的基本思想是,事件按照從最特定的事件目標到最不特定的事件目標(document對象)的順序觸發。例如,如果有頁面:

        <html>
           <head>
             <title>一個例子</title>
           </head>
           <body οnclick=”haddleClick()”>
             <div οnclick=”handleClick()”>點擊測試</div>
           </body>
         </html>
         如果用戶點擊<div/>元素,則事件按以下順序“冒泡”:
        (1)<div/>—>(2)<body/>—>(3)<html/>—>(4)document—>(5)window,事件“起泡”一直上升到window窗口對象。之所有稱爲冒泡,是因事件按照DOM的層次結構像水泡一樣不斷上升至頂端。
(二) 捕獲型事件
        事件的捕獲和冒泡剛好是相反的過程,事件從最不精確的對象開始觸發,然後到最精確(也可以在窗口級別捕獲事件,不過必須由開發人員特別指定)。有人也稱之爲自頂向下的事件模型,因爲它是從DOM層次的頂端開始向下延伸的。
(三) DOM事件流
        DOM同時支持兩種事件模型:捕獲型事件和冒泡型事件,但是,捕獲型先發生。兩種事件流會觸及DOM中所有的對象,從document對開開始,也在document對象結束(大部分兼容標準的瀏覽器會繼續將事件的捕獲/冒泡延續至window對象)。拿上面的例子來講,事件的目標(<div/>元素)是最精確的元素,實際上它會連續接收兩次事件,一次在捕獲過程中,另一次在冒泡過程中。
  DOM事件模型最獨特的性質是,文本節點也觸發事件。如果要對兼容DOM標準的瀏覽器進行開發,這是非常重要的概念。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章