【问题标题】:Javascript: Possibility of receiving event from element that is deletedJavascript:从被删除的元素接收事件的可能性
【发布时间】:2012-09-26 00:26:43
【问题描述】:

假设 JavaScript 调度程序在其队列中有一项将删除 div 元素。早些时候,我们为这个 div 元素上的点击事件设置了监听器。调度程序将在完成当前工作(可以是任何事情)后立即安排此删除任务。此时我们点击了即将被删除的div,并且对该点击的监听器的回调被添加到队列中。

我假设调度队列是先进先出的(对吗?),所以 div 将首先被删除,删除后将引发 div 点击侦听器的回调。

我是否正确捕获了事件序列,或者删除此元素会导致点击侦听器回调从队列中拉出?

【问题讨论】:

  • 你应该看看这个答案:stackoverflow.com/questions/2732818/…
  • 应该注意removeChild实际上并没有delete任何东西,元素只有在没有更多引用时才会被GC,所以它应该仍然存在(尽管在 DOM 树之外)直到事件完成,因为事件持有对它的引用。我会在修改 innerHTML 时假设类似的行为,但尚未对其进行测试。

标签: javascript events scheduler


【解决方案1】:

点击事件会在队列末尾进入队列。所以元素不应该在被点击的 DOM 中。不应捕获任何事件。

【讨论】:

    【解决方案2】:

    感谢Royce Feng 指点

    If you delete a DOM element, do any events that started with that element continue to bubble?

    答案是:这取决于浏览器。查看该链接了解详情

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-10-21
      • 2016-01-24
      • 2020-09-11
      • 1970-01-01
      • 2021-09-18
      • 2012-01-22
      • 1970-01-01
      • 2011-11-18
      相关资源
      最近更新 更多