Slaan oor na inhoud

Barcode Scanner Emulator

Skandeerder werk in Notepad maar nie in POS nie

Dit is een van die mees gerapporteerde strepieskodekwessies, en dit beteken byna altyd dat die skandeerder en verbinding in orde is — die fout lê in hoe jou toepassing sleutelbordinvoer hanteer.

Probleem

Skandering in ’n gewone teksredigeerder lewer elke keer die korrekte waarde, maar skandering in jou POS-stelsel, webtoepassing of interne hulpmiddel lewer niks, gedeeltelike invoer, of verkeerde gedrag.

Moontlike oorsake

  • Die teikenveld het nie sleutelbordfokus ten tyde van die skandering nie, of fokus is op ’n element wat nie ’n invoer is nie
  • ’n keydown-hanteerder roep preventDefault() op ’n manier wat karakterinvoer blokkeer
  • Die toepassing maak staat op paste- of input-gebeurtenisse wat skandeerdersleutelslae nie natuurlik ontketen soos jy verwag nie
  • ’n Invoermasker of valideringsuitdrukking verwerp ’n geldige karakter in die geskandeerde loonvrag
  • Die ENTER/TAB-agtervoegsel ontketen ’n onbedoelde aksie (dien ’n vorm te vroeg in, maak ’n modaal toe, navigeer weg)
  • Die skandering gebeur vinniger as wat ’n ontbonsde of versmoorde invoerhanteerder elke sleutelslag kan registreer

Diagnostiese werkvloei

  1. Maak die Sleutelbordgebeurtenistoetser in dieselfde blaaier oop en skandeer die strepieskode. As elke karakter hier korrek aangeteken word, ontvang die blaaier en bedryfstelsel gebeurtenisse goed, so die fout is in jou toepassing se gebeurtenishantering.
  2. Kontroleer of jou invoerveld gefokus is net voor die skandering in die werklike werkvloei gebeur (nie net wanneer jy dit met die hand vir toetsing klik nie).
  3. Maak jou blaaier se DevTools-konsole oop en kyk vir JavaScript-foute wat tydens die skandering gegooi word — ’n fout midde-in ’n hanteerder kan die verwerking van verdere sleutelslae stilweg stop.
  4. Verwyder tydelik enige invoermasker, validering of ontbonsingslogika en toets weer om te isoleer watter laag die invoer laat val.
  5. Kontroleer of jou toepassing na keypress luister (afgekeur en onbetroubaar vir sommige sleutels) in plaas van keydown/keyup.

Hoe om dit te herstel

  • Maak seker dat die teikenveld programmaties gefokus word wanneer die werkvloei ’n skandering verwag (byvoorbeeld onmiddellik nadat ’n lynitem bygevoeg is)
  • Vervang keypress-luisteraars met keydown/keyup, aangesien keypress afgekeur is en sommige sleutels inkonsekwent hanteer
  • Hersien enige preventDefault()-oproepe in sleutelbordhanteerders om seker te maak hulle blokkeer nie wettige karaktersleutels nie
  • Verslap invoermaskers en validering om die volle karakterreeks te aanvaar wat jou strepieskodesimbologieë kan lewer, en valideer dan die saamgestelde waarde in plaas van individuele sleutelslae
  • Pas die skandeerder se agtervoegsel by wat jou vorm verwag (sien ENTER- teenoor TAB-agtervoegsels)

Verwante hulpmiddels

Sleutelbordgebeurtenistoetser · Strepieskode-invoertoetser