【问题标题】:Is event bubbling supported by all browsers?所有浏览器都支持事件冒泡吗?
【发布时间】:2026-01-09 10:50:01
【问题描述】:

jQuery 使用事件冒泡策略来处理事件。

而且它声称是跨浏览器,

但是所有浏览器都支持“事件冒泡”吗?

还有一种策略:事件捕获,和事件冒泡相反,是不是已经绝种了?

或者我的问题可以重新表述为:

Javascript 能否自行决定是选择“事件捕获”策略还是“事件冒泡”策略?

【问题讨论】:

标签: jquery event-bubbling


【解决方案1】:

所有浏览器?不。例如,Lynx 根本不支持 JavaScript。

但是,事件冒泡是标准的 DOM 功能。 jQuery 文档没有骗你。

【讨论】:

  • 别忘了还有事件捕获策略,它在哪里使用或已经消失了?
  • 捕获也有助于产生意想不到的结果,但您可以在此处阅读更多相关信息:quirksmode.org/js/events_order.html。它变得很棘手——因为捕捉对我来说就像一盒“巧克力”[即黑盒子]——你可能知道也可能不知道最深处是什么;而如果我在触发某些东西的“黑匣子”内,我通常知道我是如何到达那里或如何离开的(即“冒泡”)。 :) 无论如何,那个怪癖页面提供了一个简洁(一如既往)的解释。
【解决方案2】:

从jQuerycompatibility page开始,它支持以下浏览器:

  • 火狐2+
  • IE6+
  • Safari 3+
  • Opera 9+
  • 铬 1+

所有这些都支持事件冒泡。

根据W3Schools browser usage page,这些浏览器占 2009 年 7 月所有浏览器使用量的 99.2%,我想说这是涵盖的跨浏览器支持。忽略那些peddling pointless pedantry 关于浏览器支持的全部或全部。如果您是任何其他浏览器的用户,那么您可能已经远离主流,拥有自己的方法来处理浏览器问题。

【讨论】:

  • 我现在主要关注的是javascript如何选择挂钩模型的“事件捕获”或“事件冒泡”阶段?
【解决方案3】:

简而言之,是的。 Netscape Navigator 4 不支持它,但我认为这些天支持 Netscape 4 并没有太多担心。

【讨论】:

    【解决方案4】:

    要么他们在撒谎,要么需要稍微修改“跨浏览器”的定义。它要么是跨浏览器,要么不是中间没有。

    【讨论】:

    • jQuery 主页上的“跨浏览器”标题清楚地显示了悬停它的含义,并且在文档中的“支持的浏览器”下有更多详细信息。总而言之,过去几年发布的所有重要的桌面平台浏览器都受支持,许多较旧或不太常见的浏览器都可以正常工作(但没有特别支持的目标)。
    • "每个重要的浏览器"... 那么它不是完全跨浏览器是吗? ...不,不是。
    • 它可以在多个浏览器上运行。因此它是跨浏览器的。唯一需要改变的是您对短语的误解。
    • um no... 跨浏览器的 Web 定义 跨浏览器是指网站、Web 应用程序、HTML 结构或客户端脚本支持所有 Web 浏览器的能力。 ... en.wikipedia.org/wiki/Cross-browser - 上下文中的定义