3 votes

Simuler la pression de la touche échappement sans jquery

Je voudrais (unit) tester mon application AngularJS sans avoir à utiliser jQuery, car jQuery remplacera jqLite et dans l'application réelle jQuery ne sera pas non plus disponible. Il y a de réelles différences entre jQuery et jqLite, donc avoir jQuery disponible pour AngularJS dans les tests unitaires est un risque.

La plupart de mes tests fonctionnent bien sans jQuery maintenant, mais j'ai besoin de déclencher un keydown pour la touche échappement, quelque chose que je ne peux trouver comment faire en utilisant jQuery. Comment puis-je faire cela en Javascript de manière transversale?

La directive écoute les keydowns échappement de cette manière:

body.bind('keydown', handledEscapeKey);
var handledEscapeKey = function(e) {
  if (e.which === 27) {
    e.preventDefault();
    scope.$apply(scope.hideTooltip());
  }
};

J'ai essayé ceci mais cela ne semble pas fonctionner:

if( window.KeyEvent ) {
  var evObj = $document.createEvent('KeyEvents');
  evObj.initKeyEvent( 'keydown', true, true, $window, false, false, false, false, 27, 0 );
} else {
  var evObj = $document.createEvent('UIEvents');
  evObj.initUIEvent( 'keydown', true, true, $window, 1 );
  evObj.keyCode = 27;
}

elm[0][0].dispatchEvent(evObj);

-3voto

JQuery Guru Points 2336

Vous pouvez consulter Angular UI @ http://angular-ui.github.io/ui-utils/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X