Barcode Scanner Emulator
Le lecteur fonctionne dans Notepad mais pas dans le POS
C'est l'un des problèmes de codes-barres les plus signalés, et il signifie presque toujours que le lecteur et la connexion sont corrects : le bug est dans la façon dont votre application gère la saisie clavier.
Problème
La lecture dans un éditeur de texte brut produit à chaque fois la bonne valeur, mais la lecture dans votre système POS, votre application web ou votre outil interne ne produit rien, une saisie partielle ou un comportement incorrect.
Causes possibles
- Le champ cible n'a pas le focus clavier au moment de la lecture, ou le focus est sur un élément qui n'est pas un champ de saisie
- Un gestionnaire
keydownappellepreventDefault()d'une façon qui bloque la saisie des caractères - L'application s'appuie sur les événements
pasteouinput, que les frappes du lecteur 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 de la charge utile lue
- Le suffixe ENTER/TAB déclenche une action involontaire (envoi prématuré du formulaire, fermeture d'une fenêtre 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
- Ouvrez le testeur d'événements clavier dans le même navigateur et lisez le code-barres. Si chaque caractère est journalisé correctement ici, le navigateur et le système d'exploitation reçoivent bien les événements : le bug est dans la gestion des événements de votre application.
- Vérifiez que votre champ de saisie a le focus juste avant la lecture dans le flux réel (pas seulement quand vous cliquez dessus à la main pour tester).
- 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 silencieusement le traitement des frappes suivantes.
- Retirez temporairement tout masque de saisie, toute validation ou toute logique d'anti-rebond, puis retestez pour isoler la couche qui perd la saisie.
- Vérifiez si votre application écoute
keypress(obsolète et peu fiable pour certaines touches) au lieu dekeydown/keyup.
Comment corriger
- Assurez-vous que le champ cible reçoit le focus par programme chaque fois que le flux attend une lecture (par exemple juste après l'ajout d'une ligne)
- Remplacez les écouteurs
keypressparkeydown/keyup, carkeypressest obsolète et traite certaines touches de façon incohérente - Passez en revue les appels à
preventDefault()dans les gestionnaires 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 lecteur à ce que votre formulaire attend (voir Suffixes ENTER et TAB)
Outils associés
Testeur d'événements clavier · Testeur de saisie de codes-barres