Barcode Scanner Emulator
L'escàner funciona al Notepad però no al POS
És un dels problemes de codis de barres que més es comuniquen, i gairebé sempre vol dir que l'escàner i la connexió estan bé: l'error és en com l'aplicació tracta l'entrada de teclat.
Problema
Llegir en un editor de text sense format produeix el valor correcte sempre, però llegir al sistema de POS, l'aplicació web o l'eina interna no produeix res, produeix una entrada parcial o un comportament incorrecte.
Causes possibles
- El camp de destinació no té el focus del teclat en el moment de la lectura, o el focus és en un element que no és d'entrada
- Un gestor de
keydowncridapreventDefault()d'una manera que bloqueja l'entrada de caràcters - L'aplicació depèn d'esdeveniments
pasteoinputque les pulsacions de l'escàner no disparen com espereu - Una màscara d'entrada o una expressió de validació rebutja un caràcter vàlid de la càrrega útil llegida
- El sufix ENTER/TAB dispara una acció no desitjada (enviar el formulari abans d'hora, tancar un modal, sortir de la pàgina)
- La lectura és més ràpida del que un gestor amb antirebot o limitació pot registrar cada pulsació
Flux de diagnòstic
- Obriu el Provador d'esdeveniments de teclat al mateix navegador i llegiu el codi. Si aquí es registra cada caràcter correctament, el navegador i el sistema operatiu reben bé els esdeveniments, així que l'error és en el tractament d'esdeveniments de l'aplicació.
- Comproveu si el camp d'entrada té el focus just abans de la lectura al flux real (no només quan hi feu clic a mà per provar).
- Obriu la consola de DevTools del navegador i busqueu errors de JavaScript llançats durant la lectura: un error a mig gestor pot aturar en silenci el processament de les pulsacions següents.
- Traieu temporalment qualsevol màscara d'entrada, validació o lògica d'antirebot i torneu a provar per aïllar quina capa descarta l'entrada.
- Comproveu si l'aplicació escolta
keypress(en desús i poc fiable amb algunes tecles) en lloc dekeydown/keyup.
Com corregir-ho
- Assegureu-vos que el camp de destinació rep el focus per codi sempre que el flux espera una lectura (per exemple, just després d'afegir una línia)
- Substituïu els escoltadors de
keypressperkeydown/keyup, perquèkeypressestà en desús i tracta algunes tecles de manera incoherent - Reviseu les crides a
preventDefault()als gestors de teclat perquè no bloquegin tecles de caràcter legítimes - Relaxeu les màscares i la validació per acceptar tot l'interval de caràcters que poden produir les vostres simbologies i valideu després el valor assemblat, no cada pulsació
- Feu coincidir el sufix de l'escàner amb el que espera el formulari (consulteu Sufixos ENTER i TAB)
Eines relacionades
Provador d'esdeveniments de teclat · Provador d'entrada de codis de barres