chaohuang chaohuang - 1 month ago 17
Javascript Question

How to remove event listener in Chrome extension

I am trying to remove the

onRequest
listener added by
chrome.extension.onRequest.addListener
after a request is made, like this:

chrome.extension.onRequest.addListener(
function(request){
chrome.extension.onRequest.removeListener();
other_function(request);
}
);


The problem is that I don't know if this works or not. I tried
chrome.extension.onRequest.hasListener
, which seems not to give the right answer, so I am wondering if there are some other ways to remove the
onRequest
listener or check if the listener exists or not.

Thanks!

Answer

removeListener takes an argument. You need to name the listener function and then remove it by name:

function doStuff(request){
    chrome.extension.onRequest.removeListener(doStuff);
    other_function(request);
}
chrome.extension.onRequest.addListener(doStuff);

Or, more succinctly:

chrome.extension.onRequest.addListener(
    function doStuff(request){
        chrome.extension.onRequest.removeListener(doStuff);
        other_function(request);
    }
);
Comments