移除自定义事件监听器

5

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

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");

但是两者都没有起作用。我做错了什么?

下面的答案对你有用吗? - rudedude
1个回答

7
第三个参数是removeEventListener方法的必填项。尝试这样做:
window.removeEventListener("fileThisEmail", this.handleFileEmail, false);

1
尽管第三个参数(useCapture)应该是可选的,并且在现代浏览器中默认为false(https://developer.mozilla.org/en/docs/Web/API/EventTarget.removeEventListener),但@harsh.prasad的代码是正确的,并且在使用问题中的示例时可以正常工作。 - rfunduk
嗯,不太确定该怎么说。每次事件监听器被触发时,事件会相互乘积。有什么想法吗? - brandonhilkert
我从原始事件中尝试了它,就像上面展示的那样,它起作用了。我可能还应该注意到React参与其中,我想知道事件是否附加到了同一件事情上。基于上面的代码,我将接受这个答案,因为它是正确的。 - brandonhilkert
@brandonhilkert 我对React相当熟悉,如果你能创建一个jsfiddle或其他演示,我可以看一下。也许你可以发布一个新问题,或通过我的网站找到我的电子邮件。 - rfunduk
@rfunduk 这里有一个新的问题:http://stackoverflow.com/questions/26143612/react-custom-event-listener - brandonhilkert

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接