Barcode Scanner Emulator
Skener radi u Notepadu, ali ne u POS-u
Ovo je jedan od najčešće prijavljenih problema s barkodom i gotovo uvijek znači da su skener i veza u redu — greška je u načinu na koji aplikacija obrađuje unos s tipkovnice.
Problem
Skeniranje u običan uređivač teksta svaki put daje ispravnu vrijednost, ali skeniranje u POS sustav, web-aplikaciju ili interni alat ne daje ništa, daje djelomičan unos ili pogrešno ponašanje.
Mogući uzroci
- Ciljano polje nema fokus tipkovnice u trenutku skeniranja ili je fokus na elementu koji nije unos
- Obrađivač
keydownpozivapreventDefault()na način koji blokira unos znakova - Aplikacija se oslanja na događaje
pasteiliinput, koje pritisci skenera ne pokreću onako kako očekujete - Maska unosa ili regularni izraz provjere valjanosti odbija valjani znak u skeniranom sadržaju
- Sufiks ENTER/TAB pokreće neželjenu radnju (prerano slanje obrasca, zatvaranje modalnog prozora, odlazak drugamo)
- Skeniranje stiže brže nego što obrađivač unosa s odgodom ili ograničenjem može zabilježiti svaki pritisak
Dijagnostički tijek
- Otvorite tester događaja tipkovnice u istom pregledniku i skenirajte barkod. Ako se ovdje svaki znak ispravno zabilježi, preglednik i operacijski sustav primaju događaje, pa je greška u obradi događaja vaše aplikacije.
- Provjerite ima li polje za unos fokus neposredno prije skeniranja u stvarnom tijeku (ne samo kad ga ručno kliknete radi testiranja).
- Otvorite konzolu DevTools preglednika i potražite JavaScript greške bačene tijekom skeniranja — greška usred obrađivača može tiho zaustaviti obradu daljnjih pritisaka.
- Privremeno uklonite masku unosa, provjeru valjanosti ili logiku odgode i ponovno testirajte da izdvojite koji sloj gubi unos.
- Provjerite sluša li aplikacija
keypress(zastarjelo i nepouzdano za neke tipke) umjestokeydown/keyup.
Kako popraviti
- Osigurajte da se ciljano polje programski fokusira kad god tijek očekuje skeniranje (na primjer odmah nakon dodavanja stavke)
- Zamijenite slušače
keypresssakeydown/keyup, jer jekeypresszastario i neke tipke obrađuje nedosljedno - Pregledajte pozive
preventDefault()u obrađivačima tipkovnice da ne blokiraju legitimne znakovne tipke - Olabavite maske i provjeru valjanosti da prihvate cijeli raspon znakova koje simbologije mogu proizvesti, a zatim provjerite sastavljenu vrijednost umjesto pojedinačnih pritisaka
- Uskladite sufiks skenera s onim što obrazac očekuje (vidi Sufiksi ENTER i TAB)