Barcode Scanner Emulator
Scanneren virker i Notepad men ikke i POS
Det er et af de mest rapporterede stregkodeproblemer, og det betyder næsten altid, at scanneren og forbindelsen er i orden — fejlen ligger i, hvordan din applikation håndterer tastaturinput.
Problem
Scanning i en almindelig teksteditor giver den rigtige værdi hver gang, men scanning i dit POS-system, din webapp eller dit interne værktøj giver ingenting, delvist input eller forkert adfærd.
Mulige årsager
- Målfeltet har ikke tastaturfokus på scanningstidspunktet, eller fokus er på et element, der ikke er et input
- En
keydown-handler kalderpreventDefault()på en måde, der blokerer tegnindtastning - Appen stoler på
paste- ellerinput-hændelser, som scannerens tastetryk ikke udløser på den måde, du forventer - En inputmaske eller et valideringsudtryk afviser et gyldigt tegn i den scannede nyttelast
- Suffikset ENTER/TAB udløser en utilsigtet handling (sender en formular for tidligt, lukker en modal, navigerer væk)
- Scanningen sker hurtigere, end en debounce- eller throttle-håndtering kan registrere hvert tastetryk
Diagnostisk arbejdsgang
- Åbn Tastaturhændelsestesteren i den samme browser, og scan stregkoden. Hvis hvert tegn logges korrekt her, modtager browseren og operativsystemet hændelserne fint, så fejlen ligger i din apps hændelseshåndtering.
- Kontroller, om dit inputfelt har fokus lige før scanningen i den rigtige arbejdsgang (ikke kun når du klikker på det manuelt under test).
- Åbn browserens DevTools-konsol, og se efter JavaScript-fejl under scanningen — en fejl midt i en handler kan tavst stoppe behandlingen af yderligere tastetryk.
- Fjern midlertidigt inputmaske, validering eller debounce-logik, og test igen for at isolere, hvilket lag der taber inputtet.
- Kontroller, om din app lytter efter
keypress(forældet og upålidelig for nogle taster) i stedet forkeydown/keyup.
Sådan retter du det
- Sørg for, at målfeltet får fokus fra programmet, når arbejdsgangen forventer en scanning (for eksempel lige efter at en linje er tilføjet)
- Erstat
keypress-lyttere medkeydown/keyup, fordikeypresser forældet og håndterer nogle taster inkonsekvent - Gennemgå alle kald til
preventDefault()i tastaturhandlere, så de ikke blokerer gyldige tegntaster - Løsn inputmasker og validering, så de accepterer hele det tegnområde, dine stregkodesymbologier kan producere, og valider derefter den samlede værdi i stedet for enkelte tastetryk
- Match scannerens suffiks med det, din formular forventer (se ENTER- og TAB-suffikser)