JavaScript - comment vérifier si l'événement a déjà été ajouté
Je veux ajouter un écouteur d'exactement une fois pour beforeunload
. C'est mon pseudo:
if(window.hasEventListener('beforeunload') === false) {
window.addEventListener('beforeunload', function() { ... }, false);
}
Mais hasEventListener
n'existe pas de toute évidence. Comment puis-je y parvenir? Merci.
source d'informationauteur Shlomo
Vous devez vous connecter pour publier un commentaire.
À l'aide de jquery, vous pouvez faire l'utilisation
data("events")
sur n'importe quel objet (ici la fenêtre) :Mais cela ne fonctionne que pour jquery événements ajoutés.
Dans un cas plus général, il vous suffit de stocker les informations que vous ajoutez un écouteur quelque part :
Je pense qu'il n'y a pas de manière standard en javascript pour obtenir de l'existant, des gestionnaires d'événements. Au mieux, vous pourriez en supplément de la méthode addEventListener fonction de Nœud d'intercepter et de stocker les auditeurs, mais je ne le recommande pas...
EDIT :
De jQuery 1.8, les données d'événement sont disponibles dans
$._data(element, "events")
. Le journal des modifications a un avertissement qui doit être pris en compte :En fait, il n'est pas nécessaire de vérifier si un auditeur a été ajouté à une cible:
Source:https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.addEventListener#Multiple_identical_event_listeners
En Chrome Dev outil, vous pouvez vérifier tous les événements attaché à un élément (Pour le débogage)-