Spring til indhold

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 kalder preventDefault() på en måde, der blokerer tegnindtastning
  • Appen stoler på paste- eller input-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

  1. Å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.
  2. 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).
  3. Åbn browserens DevTools-konsol, og se efter JavaScript-fejl under scanningen — en fejl midt i en handler kan tavst stoppe behandlingen af yderligere tastetryk.
  4. Fjern midlertidigt inputmaske, validering eller debounce-logik, og test igen for at isolere, hvilket lag der taber inputtet.
  5. Kontroller, om din app lytter efter keypress (forældet og upålidelig for nogle taster) i stedet for keydown/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 med keydown/keyup, fordi keypress er 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)

Relaterede værktøjer

Tastaturhændelsestesteren · Stregkodeinput-testeren