Naar inhoud springen

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 roept preventDefault() aan op een manier die tekeninvoer blokkeert
  • De app vertrouwt op paste- of input-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

  1. 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.
  2. 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.
  3. 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.
  4. Verwijder tijdelijk invoermasker, validatie of debounce-logica en test opnieuw om te zien welke laag de invoer laat vallen.
  5. Controleer of de app naar keypress luistert (verouderd en voor sommige toetsen onbetrouwbaar) in plaats van naar keydown/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 door keydown/keyup, omdat keypress verouderd 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)

Gerelateerde hulpmiddelen

Toetsenbordevenemententester · Barcode-invoertester