2010-12-12 94 views
5

La bibliothèque source de l'interface utilisateur jQuery contient un fichier jquery.simulate.js pour la simulation des événements de la souris et du clavier. Quel est l'avantage d'utiliser cette fonction de simulation au lieu d'utiliser jQuery event methods lors du test de l'interface utilisateur de jQuery?Différence entre jquery.simulate.js et les méthodes d'événement jQuery?

+0

Zardoz, les méthodes d'événements de jquery peuvent avoir tous les éléments de base nécessaires, mais le plugin peut avoir des choses beaucoup plus avancées, comme c'est excusivement fait pour les événements. – kobe

+0

@Si vous ne pouviez pas faire quelque chose par vous-même et si quelqu'un d'autre déjà fait cela pour vous, alors vous pouvez aller pour ... plugin – kobe

+0

@gov ... Je ne vois pas de choses avancées là-bas. Il me semble que les deux déclenchent les mêmes événements. Peut-être que quelqu'un de l'équipe de jQuery UI est ici pour répondre à cette question. – Zardoz

Répondre

4

Le fichier jquery.simulate.js sert uniquement à simuler des événements - il ne fournit pas un système de gestion d'événements complet comme le fait jQuery. Cela signifie qu'il crée un objet événement faux, puis envoie cet événement au DOM. Cela peut être comparé à la méthode .trigger() de jQuery, qui fait la même chose. Cependant, il existe de nombreuses propriétés sur un objet événement qui peuvent être modifiées, y compris bulle ou non, quel était l'élément source, si des touches spéciales ont été enfoncées, les positions x et y exactes sur lesquelles la souris a cliqué , etc. jQuery nous le cache lorsque nous appelons .trigger(), en ne définissant que les propriétés nécessaires à certaines valeurs par défaut. jquery.simulate.js d'autre part est conçu pour test (notez que le fichier se trouve sous "jquery-ui/tests /"). À des fins de test, vous souhaiterez un contrôle plus précis de l'objet événement pour mieux imiter l'interaction utilisateur réelle. Bref, à moins de faire des tests, vous n'aurez probablement pas besoin de jquery.simulate.js. Même si vous voulez certaines des fonctionnalités qu'il fournit, sachez que le fichier ne fait pas officiellement partie de la bibliothèque jquery-ui.

+1

-1. Vous avez manqué un point très important ici. .trigger() n'appellerait que les gestionnaires d'événements, le cas échéant, pour les événements clavier et les événements clavier réels seraient déclenchés. Par exemple - si j'ai besoin de déclencher l'événement de clavier retour arrière de telle sorte que le dernier caractère d'un élément est supprimé, puis de déclencher le keypress/keydown/keyup de l'événement que keyCode = 8 ne fonctionnera pas. L'utilisation de jquery.simulate.js peut faire cela.https: //github.com/j-ulrich/jquery-simulate-ext a été construit sur thsi lib. –

+0

S'il vous plaît laissez-moi savoir si en utilisant .trigger() vous êtes en mesure d'atteindre la touche réelle. Je dois mettre en œuvre la même chose. –