HTML DOM:哪些事件不会冒泡?

IT技术 javascript html dom dom-events event-bubbling
2021-02-22 14:51:52

大多数事件会在所有浏览器中冒泡。但是,我知道在 Internet Explorer 中“提交”事件不会冒泡。还有哪些不冒泡的事件?

5个回答

HTML 框架/对象

  • load
  • unload
  • scroll (除了文档上的滚动事件必须冒泡到窗口)

HTML 表单

  • focus
  • blur

突变

  • DOMNodeRemovedFromDocument
  • DOMNodeInsertedIntoDocument

进步

  • loadstart
  • progress
  • error
  • abort
  • load
  • loadend

来自:https : //en.wikipedia.org/wiki/DOM_events#Events

特定于一个元素的任何事件都不会冒泡:focus、blur、load、unload、change、reset、scroll、大多数 DOM 事件(DOMFocusIn、DOMFocusOut、DOMNodeRemoved 等)、mouseenter、mouseleave 等

+1 给@Phrogz。为了记录起见,我们在这里了解到 mouseenter “类似于鼠标悬停,不同之处在于它不会冒泡,并且当指针从其后代的物理空间之一移动到其自己的物理空间时不会发送它” .
2021-04-16 14:51:52
@zyklus“如果你专注于一个输入,你只是专注于那个元素,或者离开那个元素,或者改变那个元素,等等”恕我直言……如果事件没有冒泡……这意味着我们不能在事件流的冒泡阶段收听它......但我们可以收听它捕获事件流的阶段......所有元素都集中在层次结构中,直到文档级别。
2021-04-16 14:51:52
有“等” 在要求明确列表的答案中似乎有点粗略。"mouseenter, mouseleave, etc." 是什么意思 意思是?是否mouseover包括在内?进一步:你能提供这个信息的引文吗?
2021-04-25 14:51:52
这个答案是废话。所有事件都特定于一个元素。我错了吗?说出一个不是。
2021-04-25 14:51:52
@doug65536——首先,请不要对 2.5 年前的帖子发表反对意见。第二,不,你错了。“点击”之类的东西在概念上与元素无关。它们在概念上与屏幕区域相关联,但实际上与 DOM 树相关联。这就是冒泡的全部意义所在,您可以在更高的节点上捕获事件。如果您单击一个文本块,您也同时单击了它上面的 20 个节点。如果你专注于一个输入,你只是专注于那个 ONE 元素,或者离开那个 ONE 元素,或者改变那个 ONE 元素,等等。
2021-05-12 14:51:52

我无法列出所有不冒泡的事件。

但是我找到了一个很好的网站,可以帮助您检查事件是否可以冒泡。

@MDN event.bubbles

来自 MDN的事件列表的新链接无法编辑帖子,因此发表评论。
2021-04-24 14:51:52

除了其他答案之外,文档元素上load事件会冒泡,但它会在 Document 对象处停止冒泡,并且不会传播到 Window 对象。Window 对象的 load 事件只有在整个文档都加载完毕后才会触发。

焦点和模糊事件不会冒泡