为啥滚动事件不冒泡?

Posted

技术标签:

【中文标题】为啥滚动事件不冒泡?【英文标题】:Why does scroll event not bubble?为什么滚动事件不冒泡? 【发布时间】:2013-11-08 12:24:00 【问题描述】:

今天我有一个理论问题。为什么滚动事件不冒泡? 它与性能问题有关吗?我做了一些挖掘,但不幸的是没有找到任何可以满足我好奇心的答案。

感谢您的回复:)

【问题讨论】:

你会怎么做才能让它冒泡? 不会冒泡吗?编辑:哦,你的意思是当它没有在 Document 上发送时。 @ZachSaucier 如果它为事件委托冒泡就好了 【参考方案1】:

它会冒泡,但不会在元素上。它在文档对象上冒泡,直到 document.defaultView(文档的窗口)。发生这种行为是为了避免性能问题(滚动事件可以高速触发)。

如果您想了解有关滚动的更多信息,我建议您阅读 W3 文档:

https://www.w3.org/TR/cssom-view/#scrolling

希望对你有帮助。

【讨论】:

它不会冒泡到window,也不会冒泡到document.defaultView 它不会冒泡,但它可以被捕获。将addEventListener的第三个参数设置为true

以上是关于为啥滚动事件不冒泡?的主要内容,如果未能解决你的问题,请参考以下文章

阻止网页内部滚动条mousewheel事件冒泡

为捕获阶段注册的事件侦听器在冒泡之前未触发 - 为啥?

TinyMCE 编辑器防止滚动事件冒泡

阻止touchslider事件冒泡,防止左右滑动时出发全局滑动事件

从 ListView 到其父级的冒泡滚动事件

为啥阻止a标签的默认事件