Estoy creando una extensión para Chrome y tengo una pregunta. quiero saber, ¿cómo puedo eliminar un evento de un elemento? este es mi controlador de eventos:
const handler = function (e) { console.log("on"); }; quiero que mi extensión agregue un evento mousemove a la etiqueta html . y yo hice eso
document.querySelector("html").removeEventListener("mousemove", handler); quiero hacer algo que cuando el usuario haga clic en el ícono de mi extensión, si el texto de la insignia está activado, elimine el detector de eventos del html ; ¡pero no sé cómo eliminar el detector de eventos de la etiqueta html ! lo intenté pero no pude.
chrome.scripting.executeScript({ target: { tabId: tabs[0].id }, function: myFuntion, args: ["remove"], }); Intenté removeEventListener pero no funcionó. definí mi función en el ámbito global y no funcionó y recibí un error de que su función no está definida. ¡Incluso traté de almacenar la función en el almacenamiento de Chromes! y etc., pero ¿cómo puedo eliminar el detector de eventos de la etiqueta html al desarrollar una extensión para Chrome? gracias por ayudar.
Cuando se ejecuta el código inyectado por executeScript, crea una nueva función cada vez, por lo que la función anterior no se puede eliminar porque su puntero interno ahora es diferente.
Puede persistir la función a través de la window :
window.handler = window.handler || function (e) { console.log("on"); };Luego puede eliminarlo más tarde en otro script de ejecución:
document.querySelector("html").removeEventListener("mousemove", window.handler);