【问题标题】:Remove custom event listener移除自定义事件监听器
【发布时间】:2014-10-01 00:26:39
【问题描述】:

我正在听一个自定义事件:

evt = new CustomEvent("fileThisEmail", {
  detail: {
    name: name,
    email: email,
    content: content
  }
});

window.dispatchEvent(evt);


window.addEventListener("fileThisEmail", this.handleFileEmail);

我需要删除监听器。我试过了:

window.removeEventListener("fileThisEmail", this.handleFileEmail);
window.removeEventListener("fileThisEmail");

但两者都不起作用。我做错了什么?

【问题讨论】:

  • 下面的答案对你有用吗?

标签: javascript javascript-events event-handling


【解决方案1】:

removeEventListener 的第三个参数是强制性的。试试这个:

window.removeEventListener("fileThisEmail", this.handleFileEmail, false);

【讨论】:

  • 虽然第三个参数 (useCapture) 应该是可选的,并且在现代浏览器 (developer.mozilla.org/en/docs/Web/API/…) 中默认为 false,但 @harsh.prasad 的代码是正确的,并且适用于我使用中的示例问题。
  • 嗯,不知道该说什么。每次触发事件侦听器时,我都会让事件彼此相乘。知道差异可能是什么吗?
  • 我从一个原始事件中尝试过它,它的工作原理如上所示。我可能还应该注意到 React 参与其中,我想知道该事件是否没有附加到同一事物上。我会接受这个答案,因为根据上面的代码,它是正确的。
  • @brandonhilkert 我对 React 很熟悉,所以如果你能做一个 jsfiddle 或其他演示我可以看看它。也许发布一个新问题,或者通过我的网站找到我的电子邮件。
  • @rfunduk new q 这里:*.com/questions/26143612/…