【问题标题】:How to catch event that was stopPropagation如何捕获停止传播的事件
【发布时间】:2015-02-11 12:11:51
【问题描述】:

例如,我们有一个带有onclick 事件侦听器的链接的页面。但是处理程序使stopPropagation。如果不再冒泡,我该如何处理 click 事件?

例如

document.addEventListener('click', function(e) {console.log(e);});
a.onclick = function(e) {e.stopPropagation();};

【问题讨论】:

  • 你到底想做什么?在这种情况下,您必须在传播停止之前捕获点击。如果您想停止传播并通知文档,您可以触发自定义事件。
  • DOM 事件传播分为三个阶段:捕获阶段、目标阶段和冒泡阶段。粗略地说,事件首先向下到达目标,到达目标,然后返回。如果您在捕获阶段附加了单击事件侦听器,则其他事件处理程序stopPropagation 应该无效。请参阅this question 以获得更深入的解释。
  • 谢谢@janfoeh!这正是我一直在寻找的。请添加它作为答案,我会接受它。 document.addEventListener('click', function(e) {console.log(e);}, true);

标签: javascript dom-events stoppropagation


【解决方案1】:

DOM 事件传播分为三个阶段:捕获阶段、目标阶段和冒泡阶段。粗略地说,事件首先向下到达目标,到达目标,然后返回。

默认情况下,事件处理程序附加在最后的冒泡阶段。如果您在第一个捕获阶段附加点击事件侦听器,它将在前一个处理程序有机会调用 stopPropagation 之前运行。

请参阅this question 以获得更深入的解释。

【讨论】:

    猜你喜欢
    • 2011-01-05
    • 1970-01-01
    • 2017-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-18
    • 1970-01-01
    • 2012-10-10
    相关资源
    最近更新 更多