天天看點

事件流、事件處理程式、事件對象

首先了解幾個概念,事件流、事件和事件處理程式。

事件流:是指頁面接收到事件的順序,通俗點就是事件在子元素和父元素間的傳遞順序。

事件:使用者與浏覽器進行互動的動作。

事件處理程式:浏覽器相應相關事件的函數,其名稱一般以‘on’+事件名。

首先講一下事件流。事件流在早期的時候首先是由IE和Netscape communicator團隊提出。而兩者提出的概念差不多是相反的。IE提出的事件流是事件冒泡,而Netscape提出的事件流是事件捕獲。

對于事件冒泡,指的是事件開始的時候應該由最具體的元素(文檔中嵌套層次最深的節點)開始接收,然後逐級向上傳播到較為不具體的節點。

(對于IE9+、FF、Chrome、Safari會一直傳播到window)

對于事件捕獲,指的是事件一開始是由不太具體的節點開始接收,而最具體的節點應該最後才接收到事件。其用意就是為了再事件達到預定目标之前捕獲她。

(本來是隻有Netscape支援這種事件流模型,但IE9、FF、chrome、Safari也支援了這種模型,但是他們支援的是從window開始捕獲事件)

而現在的DOM2級事件則規定了事件流包括了事件捕獲、目标階段和事件冒泡三個階段。對于事件捕獲階段,實際上在該階段實際目标是不會接收到事件的,而實際目标會被納入事件冒泡中。但是IE9、Safari、chrome、ff、opera都支援在捕獲階段觸發事件對象上的事件,也就是說在實際目标上會有兩次機會接收到事件并觸發事件處理程式。

剩下的以後再補吧,暫時寫這麼多