能冒泡的事件

摘要:每个 event 都有一个event.bubbles属性,可以知道它可否冒泡。(ref:W3定义的Event Interface),当然 W3 DOM Level 3 Events 的细则里已经附上这个表格了:

每个 event 都有一个event.bubbles属性,可以知道它可否冒泡。(ref:W3定义的Event Interface)

当然 W3 DOM Level 3 Events 的细则里已经附上这个表格了:

Event TypeBubbling 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 属性。

Event TypeBubbling phase
DOMActivate✔
DOMAttrModified✔
DOMCharacterDataModified✔
DOMFocusIn✔
DOMFocusOut✔
DOMNodeInserted✔
DOMNodeInsertedIntoDocument✗
DOMNodeRemoved✔
DOMNodeRemovedFromDocument✗
DOMSubtreeModified✔
keypress✔

H5 还定义了一些新事件:

  • media相关事件,都不冒泡
  • drag相关事件 dragstart 、 drag 、 dragenter 、 dragexit 、 dragleave 、 dragover 、 drop 、 dragend均冒泡
  • History相关事件:popstate,hashchange冒泡(从window开始……所以意义在哪里),pagetransition不冒泡

还有很多H5新事件,大多在草案阶段,就不一一翻开了。

此外,这里还有一个关于IE的事件列表,http://www.feiesoft.com/html/events.html

事件冒泡是我们实现事件代理(委托)的关键,在avalon1.6中,默认让能冒泡的事件都使用事件代理实现了!

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
}
//....


本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://shenqiku.cn/article/FLY_8573