DOM事件: 使Javascript有能力對HTML上的事件做出反應项玛。這些事件包括鼠標鍵盤的點擊事件貌笨、移動事件以及頁面中內容的變化等。HTML元素事件是瀏覽器內在自動產生的,當有事件發(fā)生時html元素會向外界(這里主要指元素事件的訂閱者)發(fā)出各種事件,如click,onmouseover,onmouseout等等襟沮。
事件代理:事件代理锥惋,又稱事件委托(Delegation),就是將處理事件委派到父元素或者頂級元素上臣嚣,利用事件的冒泡機制净刮,管理某一類型元素上的所有事件
事件流: 事件發(fā)生時會在元素節(jié)點與根節(jié)點之間按照特定的順序傳播,路徑所經過的所有節(jié)點都會收到該事件硅则,這個傳播過程即DOM事件流淹父。
事件模型: 事件傳播的順序對應瀏覽器的兩種事件流模型:捕獲型事件流和冒泡型事件流。
三個階段:捕獲階段 目標階段 冒泡階段
冒泡型事件流:事件的傳播是從最特定的事件目標到最不特定的事件目標怎虫。即從DOM樹的葉子到根暑认±Ы椋【推薦】
捕獲型事件流:事件的傳播是從最不特定的事件目標到最特定的事件目標。即從DOM樹的根到葉子蘸际。
在冒泡型事件流中click事件傳播順序為<div>—》<body>—》<html>—》document
在捕獲型事件流中click事件傳播順序為document—》<html>—》<body>—》<div>
DOM標準采用捕獲+冒泡座哩。兩種事件流都會觸發(fā)DOM的所有對象,從document對象開始粮彤,也在document對象結束根穷。
1、所有現代瀏覽器都支持事件冒泡导坟,但在具體實現中略有差別:
IE5.5及更早版本中事件冒泡會跳過<html>元素(從body直接跳到document)屿良。IE9、Firefox惫周、Chrome尘惧、和Safari則將事件一直冒泡到window對象。
2递递、IE9喷橙、Firefox、Chrome登舞、Opera贰逾、和Safari都支持事件捕獲。盡管DOM標準要求事件應該從document對象開始傳播逊躁,但這些瀏覽器都是從window對象開始捕獲事件的似踱。
3隅熙、由于老版本瀏覽器不支持稽煤,很少有人使用事件捕獲。建議使用事件冒泡囚戚。
4酵熙、盡管“DOM2級事件”標準規(guī)范明確規(guī)定事件捕獲階段不會涉及事件目標,但是在IE9驰坊、Safari匾二、Chrome、Firefox和Opera9.5及更高版本都會在捕獲階段觸發(fā)事件對象上的事件拳芙。結果察藐,就是有兩次機會在目標對象上面操作事件。
5 舟扎、并非所有的事件都會經過冒泡階段 分飞。所有的事件都要經過捕獲階段和處于目標階段,但是有些事件會跳過冒泡階段:如睹限,獲得輸入焦點的focus事件和失去輸入焦點的blur事件譬猫。