Passer au contenu

Barcode Scanner Emulator

Le scanneur fonctionne dans Notepad mais pas au POS

C'est l'un des problèmes de codes à barres les plus signalés. Il signifie presque toujours que le scanneur et la connexion sont corrects. Le bogue se trouve dans la façon dont votre application traite la saisie au clavier.

Problème

La lecture dans un éditeur de texte brut produit chaque fois la bonne valeur, mais la lecture dans votre système de POS, votre application Web ou votre outil interne ne produit rien, une saisie partielle ou un comportement incorrect.

Causes possibles

  • La zone cible n'a pas le focus du clavier au moment de la lecture, ou le focus est sur un élément qui n'est pas une zone de saisie
  • Un gestionnaire keydown appelle preventDefault() d'une façon qui bloque la saisie des caractères
  • L'application s'appuie sur les événements paste ou input, que les frappes du scanneur ne déclenchent pas comme vous l'attendez
  • Un masque de saisie ou une expression régulière de validation rejette un caractère valide du contenu lu
  • Le suffixe ENTER/TAB déclenche une action non voulue (envoi prématuré du formulaire, fermeture d'une boîte modale, navigation ailleurs)
  • La lecture arrive plus vite qu'un gestionnaire de saisie avec anti-rebond ou limitation ne peut enregistrer chaque frappe

Démarche de diagnostic

  1. Ouvrez l'outil d'essai des événements clavier dans le même navigateur et lisez le code à barres. Si chaque caractère est consigné correctement ici, le navigateur et le système d'exploitation reçoivent bien les événements. Le bogue est dans la gestion des événements de votre application.
  2. Vérifiez que votre zone de saisie a le focus juste avant la lecture dans le processus réel, et pas seulement lorsque vous cliquez dessus à la main pour l'essai.
  3. Ouvrez la console DevTools du navigateur et cherchez les erreurs JavaScript levées pendant la lecture. Une erreur levée au milieu d'un gestionnaire peut arrêter en silence le traitement des frappes suivantes.
  4. Retirez temporairement tout masque de saisie, toute validation ou toute logique d'anti-rebond, puis refaites l'essai pour isoler la couche qui perd la saisie.
  5. Vérifiez si votre application écoute keypress (désuet et peu fiable pour certaines touches) au lieu de keydown/keyup.

Comment corriger

  • Assurez-vous que la zone cible reçoit le focus par programme chaque fois que le processus attend une lecture (par exemple juste après l'ajout d'une ligne)
  • Remplacez les écouteurs keypress par keydown/keyup, car keypress est désuet et traite certaines touches de façon inégale
  • Passez en revue les appels à preventDefault() dans les gestionnaires de clavier pour qu'ils ne bloquent pas les touches de caractères légitimes
  • Assouplissez les masques et la validation pour accepter toute la plage de caractères que vos symbologies peuvent produire, puis validez la valeur assemblée plutôt que les frappes individuelles
  • Accordez le suffixe du scanneur à ce que votre formulaire attend (voir Suffixes ENTER et TAB)

Outils connexes

Outil d'essai des événements clavier · Outil d'essai de saisie de codes à barres