Barcode Scanner Emulator
Skanneren virker i Notisblokk, men ikke i POS
Dette er et av de mest rapporterte strekkodeproblemene, og det betyr nesten alltid at skanner og tilkobling er i orden. Feilen ligger i hvordan programmet håndterer tastaturinndata.
Problem
Skanning inn i et enkelt tekstprogram gir riktig verdi hver gang, men skanning inn i POS-systemet, nettprogrammet eller et internt verktøy gir ingenting, delvis inndata eller feil atferd.
Mulige årsaker
- Målfeltet har ikke tastaturfokus i skanneøyeblikket, eller fokus er på et element som ikke er et inndatafelt
- En
keydown-behandler kallerpreventDefault()på en måte som blokkerer tegninntasting - Programmet stoler på
paste- ellerinput-hendelser som skannertastetrykk ikke utløser slik du forventer - En inndatamaske eller valideringsregex avviser et gyldig tegn i den skannede lasten
- ENTER/TAB-suffikset utløser en utilsiktet handling (sender et skjema for tidlig, lukker en modal, navigerer bort)
- Skanningen går raskere enn en forsinket eller begrenset inndatabehandler rekker å registrere hvert tastetrykk
Diagnostisk arbeidsflyt
- Åpne tastaturhendelsestesten i samme nettleser og skann strekkoden. Hvis hvert tegn logges riktig her, mottar nettleser og operativsystem hendelser fint, så feilen ligger i programmets hendelseshåndtering.
- Sjekk om inndatafeltet har fokus rett før skanningen i den ekte arbeidsflyten, ikke bare når du klikker i det manuelt under testing.
- Åpne nettleserens DevTools-konsoll og se etter JavaScript-feil under skanningen. En feil midt i en behandler kan stoppe videre tastetrykk i stillhet.
- Fjern midlertidig inndatamaske, validering eller debounce-logikk og test på nytt for å isolere hvilket lag som dropper inndata.
- Sjekk om programmet lytter etter
keypress(utfaset og upålitelig for noen taster) i stedet forkeydown/keyup.
Slik retter du
- Sørg for at målfeltet får fokus programmatisk når arbeidsflyten forventer en skanning (for eksempel rett etter at en linje er lagt til)
- Bytt ut
keypress-lyttere medkeydown/keyup, sidenkeypresser utfaset og håndterer noen taster inkonsekvent - Gå gjennom kall til
preventDefault()i tastaturbehandlere slik at de ikke blokkerer gyldige tegntaster - Løsne inndatamasker og validering slik at de godtar hele tegnområdet symbologiene kan produsere, og valider den sammensatte verdien i stedet for enkelttastetrykk
- Tilpass skannerens suffiks til det skjemaet forventer (se ENTER- og TAB-suffikser)