我有以下代码:

    chrome.tabs.onUpdated.addListener(function(callback){
    var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent";
var eventer = window[eventMethod];
var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message";

    eventer(messageEvent,function(e) {//script});

});


我想在触发第二个侦听器后将其删除(按时间顺序,第一个侦听器首先触发,然后在收到消息时触发第二个侦听器)。

我真的不了解.removeEventListener函数的语法以及如何将其应用到我的示例中。我已经读过它在侦听器中不适用于匿名函数,因此我必须先声明这些函数,对吗?

谢谢你的帮助。

最佳答案

这有点棘手,但是请忍受我。这是添加事件侦听器的方法:

el.addEventListener("event", function () {
  // code
});


removeEventListener的签名几乎相同,但是要注意的是:您需要传递一个变量,该变量引用传递给addEventListener的函数。传递匿名函数无济于事(因为稍后您将无法引用它)。因此,在您的情况下,您必须改为传递一个命名函数:

function eventHandler (e) { /* handle e */ }
el.addEventListener("event", eventHandler);


要删除它,请将其传递给removeEventListener

el.removeEventListener("event", eventHandler);


el是要向其添加侦听器的元素,event可以是一个事件,例如click,而eventHandler则指向函数对象。

07-24 09:44
查看更多