Comment ajouter et supprimer un écouteur d'événement à l'aide d'une fonction avec des paramètres?
Désolé si c'est une question qui revient souvent, mais je ne pouvais pas trouver toutes les réponses qui semblaient pertinentes par le biais de la recherche.
Si je attacher un écouteur d'événement comme ceci:
window.addEventListener('scroll', function() { check_pos(box); }, false);
il ne semble pas fonctionner pour essayer de le supprimer plus tard, comme ceci:
window.removeEventListener('scroll', function() { check_pos(box); }, false);
Je suppose que c'est parce que le addEventListener
et removeEventListener
méthodes voulez une référence à la même fonction, alors que j'ai fourni avec des fonctions anonymes, qui, bien qu'identique dans le code, ne sont pas littéralement le même.
Comment puis-je modifier mon code pour obtenir de l'appel à removeEventListener
de travail? La "boîte" argument fait référence au nom d'un <iframe>
que je suis suivi à l'écran; c'est, je veux être en mesure de souscrire à la scroll
événement une fois pour chaque <iframe>
que j'ai (la quantité varie en fonction), et une fois que le check_pos()
des mesures de la fonction d'une certaine position, il va appeler une autre fonction et aussi enlever l'écouteur d'événement pour libérer des ressources système.
Mon intuition est que la solution implique la fermeture et/ou le nom de la fonction anonyme, mais je ne suis pas sûr exactement ce à quoi ça ressemble, et il serait souhaitable que d'un exemple concret.
L'espoir qui fait sens. Merci pour toute aide!
Vous devez vous connecter pour publier un commentaire.
Avez-vous essayé de maintenir une référence à la fonction anonyme (comme vous l'avez suggéré)?
Donc:
Mozilla docs suggérer la même chose.
window.addEventListener('scroll', function() { do_something('string1'); }, false);
et plus tardwindow.removeEventListener('scroll', function() { do_something('string1'); }, false);
et plus tardwindow.addEventListener('scroll', function() { do_something('string2'); }, false);
, etc.JS:
HTML: