Barcode Scanner Emulator
Scanner werkt in Kladblok maar niet in de POS
Dit is een van de meest gemelde barcodeproblemen, en het betekent bijna altijd dat scanner en verbinding in orde zijn. De fout zit in hoe de toepassing toetsenbordinvoer verwerkt.
Probleem
Scannen in een eenvoudige teksteditor geeft elke keer de juiste waarde, maar scannen in het POS-systeem, de webapp of een intern hulpmiddel levert niets, gedeeltelijke invoer of verkeerd gedrag op.
Mogelijke oorzaken
- Het doelveld heeft op het moment van scannen geen toetsenbordfocus, of de focus staat op een element dat geen invoerveld is
- Een
keydown-afhandelaar roeptpreventDefault()aan op een manier die tekeninvoer blokkeert - De app vertrouwt op
paste- ofinput-gebeurtenissen die scannertoetsaanslagen niet op de verwachte manier activeren - Een invoermasker of validatieregex wijst een geldig teken in de gescande gegevens af
- Het ENTER/TAB-achtervoegsel activeert een onbedoelde actie (formulier te vroeg verzenden, een modaal venster sluiten, wegnavigeren)
- De scan is sneller dan een vertraagde of begrensde invoerafhandelaar elke toetsaanslag kan registreren
Diagnosestappen
- Open de toetsenbordevenemententester in dezelfde browser en scan de barcode. Als elk teken hier correct wordt gelogd, ontvangen browser en besturingssysteem de gebeurtenissen goed, dus zit de fout in de gebeurtenisafhandeling van de app.
- Controleer of het invoerveld in de echte workflow direct vóór de scan focus heeft, niet alleen wanneer je er voor de test handmatig op klikt.
- Open de DevTools-console van de browser en zoek naar JavaScript-fouten tijdens de scan. Een fout midden in een afhandelaar kan de verwerking van verdere toetsaanslagen stilzwijgend stoppen.
- Verwijder tijdelijk invoermasker, validatie of debounce-logica en test opnieuw om te zien welke laag de invoer laat vallen.
- Controleer of de app naar
keypressluistert (verouderd en voor sommige toetsen onbetrouwbaar) in plaats van naarkeydown/keyup.
Oplossen
- Zorg dat het doelveld programmatisch focus krijgt wanneer de workflow een scan verwacht (bijvoorbeeld direct na het toevoegen van een regel)
- Vervang
keypress-listeners doorkeydown/keyup, omdatkeypressverouderd is en sommige toetsen inconsistent afhandelt - Controleer aanroepen van
preventDefault()in toetsenbordafhandelaars zodat ze legitieme tekentoetsen niet blokkeren - Versoepel invoermaskers en validatie zodat ze het volledige tekenbereik accepteren dat de barcodesymbologieën kunnen produceren, en valideer de samengestelde waarde in plaats van losse toetsaanslagen
- Stem het scannerachtervoegsel af op wat het formulier verwacht (zie ENTER- en TAB-achtervoegsels)