能冒泡的事件

每一個 event 都有一個event.bubbles屬性,能夠知道它能否冒泡。(ref:W3定義的Event Interface)javascript

固然 W3 DOM Level 3 Events 的細則裏已經附上這個表格了:html

Event Type Bubbling phase
abort
beforeinput
blur
click
compositionstart
compositionupdate
compositionend
dblclick
error
focus
focusin
focusout
input
keydown
keyup
load
mousedown
mouseenter
mouseleave
mousemove
mouseout
mouseover
mouseup
resize
scroll
select
unload
wheel

還附上了 Legacy Events(舊瀏覽器支持的非標準遺留事件)的 bubble 屬性。java

Event Type Bubbling phase
DOMActivate
DOMAttrModified
DOMCharacterDataModified
DOMFocusIn
DOMFocusOut
DOMNodeInserted
DOMNodeInsertedIntoDocument
DOMNodeRemoved
DOMNodeRemovedFromDocument
DOMSubtreeModified
keypress

H5 還定義了一些新事件:瀏覽器

  • media相關事件,都不冒泡ide

  • drag相關事件 dragstart 、 drag 、 dragenter 、 dragexit 、 dragleave 、 dragover 、 drop 、 dragend均冒泡spa

  • History相關事件popstatehashchange冒泡(從window開始……因此意義在哪裏),pagetransition不冒泡代理

還有不少H5新事件,大多在草案階段,就不一一翻開了。code

此外,這裏還有一個關於IE的事件列表,http://www.feiesoft.com/html/events.htmlorm

事件冒泡是咱們實現事件代理(委託)的關鍵,在avalon1.6中,默認讓能冒泡的事件都使用事件代理實現了!htm

var  canBubbleUp = {
     click: true ,
     dblclick: true ,
     keydown: true ,
     keypress: true ,
     keyup: true ,
     mousedown: true ,
     mousemove: true ,
     mouseup: true ,
     mouseover: true ,
     mouseout: true ,
     wheel: true ,
     mousewheel: true ,
     input: true ,
     change: true ,
     beforeinput: true ,
     compositionstart: true ,
     compositionupdate: true ,
     compositionend: true ,
     select: true ,
     cut: true ,
     paste: true ,
     focusin: true ,
     focusout: true ,
     DOMFocusIn: true ,
     DOMFocusOut: true ,
     DOMActivate: true ,
     dragend: true ,
     datasetchanged: true
}
if  (!W3C) {
     delete  canBubbleUp.change
     delete  canBubbleUp.select
}
//....
相關文章
相關標籤/搜索