w3schools utiliza una tipos terminar pasar parametros para metodos lista las instrucciones funciones funcion desde javascript events javascript-events event-handling addeventlistener

utiliza - pasar parametros a una funcion javascript desde html



¿Cómo agrego y elimino un detector de eventos usando una función con parámetros? (2)

¿Has intentado mantener una referencia a la función anónima (como sugeriste)?

Asi que:

var listener = function() { check_pos(box); }; window.addEventListener(''scroll'', listener, false); ... window.removeEventListener(''scroll'', listener, false);

Los documentos de Mozilla suggest lo mismo.

Lo siento si esta es una pregunta común, pero no pude encontrar ninguna respuesta que pareciera pertinente mediante la búsqueda.

Si adjunto un oyente de eventos como este:

window.addEventListener(''scroll'', function() { check_pos(box); }, false);

no parece funcionar para tratar de eliminarlo más tarde, así:

window.removeEventListener(''scroll'', function() { check_pos(box); }, false);

Supongo que esto se debe a que los métodos addEventListener y removeEventListener quieren una referencia a la misma función, mientras les proporciono funciones anónimas que, aunque son idénticas en el código, no son literalmente iguales.

¿Cómo puedo cambiar mi código para que funcione la llamada a removeEventListener ? El argumento "caja" se refiere al nombre de un <iframe> que estoy rastreando en la pantalla; es decir, quiero poder suscribirme al evento de scroll una vez para cada <iframe> que tengo (la cantidad varía), y una vez que la función check_pos() mide una cierta posición, llamará a otra función y también eliminará el oyente de eventos para liberar recursos del sistema.

Mi corazonada es que la solución implicará un cierre y / o el nombramiento de la función anónima, pero no estoy seguro de cómo se ve exactamente, y agradecería un ejemplo concreto.

Espero que tenga sentido. ¡Gracias por cualquier ayuda!


var listener; listener = function(){ if( window.target != anotherEvent.target ) { ...CODE where window.removeEventListener(''click'', listener , false); }; window.addEventListener(''click'', listener ,false);