Después de obtener una pista de esta publicación Publicar
Estoy tratando de eliminar un Oyente (que ha bloqueado la URL usando webRequest api) para desbloquear la URL. Pero no puedo eliminarlo con éxito, estoy haciendo algo como esto...
Para bloquear la URL
chrome.webRequest.onBeforeRequest.addListener( function blockListener (details) { return { cancel: true }; },{ urls: [url], types: [ 'main_frame' ] }, ['blocking'] );Para desbloquear la URL
chrome.webRequest.onBeforeRequest.removeListener(blockListener);¿Qué estoy haciendo mal?
Está utilizando una función con nombre cuando agrega un oyente para pasarlo como parámetro, además, solo pasa el oyente para eliminarlo, que debería ser el segundo parámetro, después de definir el evento del que está eliminando el oyente . Sin embargo, ese no es el enfoque correcto. En su lugar, debe definir su función por separado, como
function blockListener(details) { // Your code }y luego use esto para agregar/eliminar oyentes.
El fragmento a continuación tiene un div con un texto interno en el que puede hacer clic durante 5 segundos y luego deja de escuchar. Puede probarlo y ver los registros durante su prueba.
function clicked() { console.log("Clicked"); } document.getElementById("foo").addEventListener("click", clicked); setTimeout(function() { document.getElementById("foo").removeEventListener("click", clicked, false); console.log("No longer listening"); }, 5000); <div id="foo">abcd</div>