Comment vérifier si un gestionnaire d'événement existe à l'aide de jQuery ou JS?
Je veux vérifier si un événement est disponible ou pas, avant d'affecter une fonction à elle.
Le problème est que Google Chrome le soutien de l'évènement "loadedmetadata" dans l'élément Vidéo alors que FireFox ne le font pas.
Je n'ai la suite
$('video').bind('loadedmetadata', videoloaded);
videoloaded();
Il a bien fonctionné dans Firefox, mais quand j'ai essayé dans google Chrome, la fonction a été exécutée deux fois (ce qui est logique). Je veux vérifier si loadedmetadata
gestionnaire d'événement existe ou pas pour exécuter la fonction qu'une seule fois dans chaque navigateur.
Si une telle possibilité n'existe pas, tout travail intelligent autour pour cela?
OriginalL'auteur Omar Abid | 2010-10-09
Vous devez vous connecter pour publier un commentaire.
Vérifier la
$video.data("events")
si cet objet contient votre cas, puisque vous utilisez.bind
tous les événements de cet élément seront stockées dans cet objet.Plein de travail exemple sur jsFiddle
Je suis un peu plus confus maintenant que quand j'ai commencé 🙁
En supposant qu'il est toujours à l'aide de jQuery pour lier les événements, cela signifie que tous les gestionnaires d'événements sont stockés sur
element.data("events")
. C'est un objet qui contient plusieurs objets, où ceux-ci contient des informations sur l'événement. par exemple, l'événementx
sur un élément; laelement.data("events")
sera de retour:({x:[{handler:(function () {}), data:(void 0), namespace:"", type:"x", guid:31}]})
Grâce Bruon, je vais regarder cela d'un peu plus.
Il ne fonctionne pas, au moins dans FireFox, parce que même si l'Événement n'existe pas (pas mis en œuvre par le navigateur) il va avoir des bindings et ajouté que les événements de l'objet. Donc ça va donner de mauvais résultats. J'ai trouvé un moyen, grâce à la propriété readyState. Merci pour vos commentaires.
OriginalL'auteur BrunoLM