事件發生時會在元素節點之間按照特定的順序進行傳播,這個傳播過程就是dom的事件流。w3c制定的事件模型中,一次事件的發生分為三階段:
1.捕獲階段:當元素觸發某個事件如onclick時,頂層物件document就會發出乙個事件流,隨著dom樹的節點向目標元素節點流去,直到目標元素,在這個過程中,事件相應的監聽函式不會被觸發。
2.目標階段:當到達目標元素後,如果給目標元素繫結了監聽函式那就執行,否則不執行。
3.冒泡階段:從目標元素往頂層元素物件document傳播,途中如果有節點繫結了相應的事件處理函式,這些函式會被一次性觸發。即如果繫結乙個事件,那麼這個時間就會依次在它的父級元素中被觸發。
注意:所有的事件型別都會經歷事件捕獲但是只有部分事件會經歷事件冒泡,如submit
阻止冒泡事件:
在w3c中,用e.stoppropagation()來阻止,在ie中使用e.cancelbubble=true。它們只阻止事件的冒泡,不會阻止事件的預設行為。
這裡要注意乙個事:
var e=event || window.event;//這句話是為了相容。在ie下,事件物件是全域性的,作為window的乙個屬性,event在其他瀏覽器中作為方法的第乙個引數傳入。
包括這**也是為了相容:
function
stopb
(e)else
}
阻止預設事件:
在w3c中,用e.preventdefault()來阻止,在ie中使用e.returnvalue=false。
a.
onclick
=function
(e)else
}
return false在js中只阻止預設行為,在jquery裡既阻止預設行為又阻止冒泡。
ie瀏覽器和opeta中全域性變數是window.event,firefox中是event,事件物件在ie中是window.event.srcelement,firefox中是event.target。opeta兩者皆可。
DOM事件處理有三個階段
dom事件處理有三個階段 捕捉階段 capture phase 從最上層元素,直到最下層 你點選的那個target 元素。路過的所有節點都可以捕捉到該事件。命中階段 target phase 如果該事件成功到達了target元素,它會進行事件處理。冒泡階段 bubbling phase 事件從最下層...
事件的三個階段
事件冒泡 多個元素巢狀關係,這些元素都註冊了相同的事件型別,那麼,如果我們觸發了最裡面的元素的事件,外面的所有的元素的事件也會自動觸發,這種行為叫事件冒泡 事件的階段 1.捕獲階段 由外向內 2.當前目標階段 選擇觸發事件 3.冒泡階段 由內向外 e.eventphase屬性可以檢視觸發顯示的階段 ...
Event事件的三個階段
www.w3school.com.cn htmldom event bubbles.asp 在 2 級 dom標準中,事件傳播分為三個階段 第一,捕獲階段。事件從 document 物件沿著文件樹向下一級一級傳遞給目標節點。如果目標的任何乙個先輩註冊了捕獲事件控制代碼比如document.onkey...