Question

Je cherche à créer des événements dans JavaScript en utilisant la même méthodologie que JQuery- fait-il savoir comment JQuery le fait?

Mon raisonnement est qu'utiliser JavaScript brut tel ceci:

var myEvent = new CustomEvent("userLogin", eventProperties);

... ne fonctionne pas réellement sur le navigateur natif Android, car il ne supporte pas le niveau DOM Niveau 3 comme Chrome et d'autres navigateurs.

Cependant, JQuery fait travaille sur le navigateur en stock d'Android et utilise simplement:

$.event.trigger('MyEvent');

Ma question est, quel est le code derrière cela?J'ai essayé de le trouver en traversant JQuery's code source , maisne peut pas me faire la tête!

Était-ce utile?

La solution

La chose fondamentale ici est la suivante: lorsque vous crochetez un gestionnaire d'événements avec jQuery, jQuery ne n'ajoute pas ce gestionnaire à l'élément DOM. Au lieu de cela, JQuery raccroche un gestionnaire d'un gestionnaire sur l'élément DOM (s'il n'en a pas déjà un dessus). Lorsque l'événement se produit, JQuery examine la liste des gestionnaires enregistrés de JQuery pour l'événement et les tire dans l'ordre. (Il y a plusieurs raisons à cela; au départ, c'était principalement des fuites de mémoire, c'est-à-dire des fuites de mémoire, c'est-à-dire des manutentionnaires tirés dans une commande, et tout le monde dans un ordre différent; alors JQuery a repris et assurait la commande.)

(vous pourrez peut-être voir où je vais avec ceci ...)

Ainsi, lorsque vous utilisez trigger, JQuery envoie l'événement synthétique à l'élément DOM, mais il ne doit pas Noir sur cet événement synthétique au travail; Il appelle les gestionnaires que vous avez enregistrés directement dans JQuery. En fait, il définit un drapeau de manière à ce qu'il sait que c'est fait cela, donc si le navigateur fait envoie l'événement au gestionnaire de JQuery pour cela, JQuery sait de l'ignorer (car cela a déjà fait son travail) .

Vous pouvez le voir dans toute sa gloire commençant par la ligne 4 464 de Le fichier JQUERY non compressé actuel .

Fondamentalement de la construction de son propre pub / sous-système, et utilise uniquement le système d'événements de navigateur comme entrée. Les événements personnalisés ne doivent donc généralement pas parler au navigateur du tout.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top