Estoy tratando de eliminar un detector de eventos que inicializo en algún lugar del código y luego elimino más tarde en una función. Sé que debe eliminar el mismo oyente que inicializó, pero parece que no funciona. Guardo el detector de eventos en una variable que creo que tiene un alcance global, por lo que no estoy seguro de cuál es el problema. El detector de eventos en sí funciona bien y comienza como se esperaba.
También intenté no almacenar el detector de eventos en una variable, pero tampoco funcionó.
mainFunction = function (){ mousee = document.addEventListener('mouseout', mouseEvent); if ($(".message_input").val().replace(/\s/g, "").length > 0){ unbindAll(true); // unbind all functions message = getMessageText(); // retrieve the users message text $(".message_input_wrapper").html(""); printMessage(message, "right"); // display there message on the screen if (message=="stop"){ document.removeEventListener(mousee); initiateStopSection(); } else { //async_elipsis(); response = async_bot(message); }; }; };Solo para aclarar, inicialmente estaba usando
document.removeEventListener("mouseout", mouseEvent)pero no estaba funcionando
Al usar removeEventListener, debe pasar el tipo de evento y el controlador de eventos, por lo que en este caso usaría
document.removeEventListener("mouseout", mouseEvent)removeEventListener toma 2 argumentos. El primero es el evento al que intenta apuntar, en este caso mouseout , y el segundo es la función que desea eliminar.
Para tu ejemplo sería este:
document.removeEventListener("mouseout", mouseEvent)No hay necesidad de configurar el oyente inicial en una variable con esta implementación.