Intercepter toutes les pressions de touches avec jQuery avant qu'elles ne soient traitées

J'ai une page Web et j'ai besoin d'intercepter toutes les pressions de touches avant qu'elles ne soient envoyées à n'importe quel élément de dom. Lorsque l'utilisateur tape quelque chose comme ~goto:/index.html: (qui en effet viendra d'un scanner de code-barres), je dois capturer les pressions de la touche après la ~ pour les analyser une fois que je parviens à la seconde ~goto:/index.html: J'ai réussi à obtenir quelque chose avec le $(document).keypress() comme suit:

 $(document).ready(function() { $(document).keypress(function(e) { // do the processing here and // return false when ignoring keystrokes }); }); 

Le problème est que je reçois la pression de la touche après qu'elle est passée à l'élément focalisé. Quoi qu'il en soit pour l'obtenir avant afin que je puisse en fait le rejeter?

Vous aurez probablement plus de chance avec la décomposition qu'il devrait tirer avant l'événement

Fais aussi cela

 $(document).keydown(function(e) { e.preventDefault(); }); 

Appeler preventDefault arrêtera le processus normal de la pression des touches. En fait, vous pouvez rester avec la pression de touche et utilisez simplement preventDefault pour terminer vos besoins d'interception.

Lisez ceci au sujet de l'éboulement d'événements. http://www.quirksmode.org/js/events_order.html

Cela fonctionne pour Firefox:

  document.addEventListener('keypress',function(e){alert('body1'); e.cancelBubble = true;},true) 

Je ne suis pas sûr de ce qui fonctionnera, c'est-à-dire, car le document auquel j'ai été lié indique, c'est-à-dire que les bulles d'événements sont vers l'intérieur vers l'avant. Vous devrez peut-être essayer une autre façon. Par exemple, vous pouvez ajouter un gestionnaire d'événements à tout l'élément que vous ne voulez pas qu'ils traitent l'événement, puis les empêcher de gérer l'événement dans ce gestionnaire d'événements.