Liigu sisu juurde

Barcode Scanner Emulator

Skanner töötab Notepadis, kuid mitte POS-is

See on üks enim teatatud vöötkoodiprobleeme ja tähendab peaaegu alati, et skanner ja ühendus on korras — viga on selles, kuidas teie rakendus klaviatuurisisendit käsitleb.

Probleem

Lihttekstiredaktorisse skannimine annab iga kord õige väärtuse, kuid teie POS-süsteemi, veebirakendusse või sisetööriista skannimine ei anna midagi, annab osalise sisendi või vale käitumise.

Võimalikud põhjused

  • Sihtväljal ei ole skannimise hetkel klaviatuurifookust või fookus on elemendil, mis ei ole sisend
  • keydown töötleja kutsub preventDefault() viisil, mis blokeerib märkide sisestamise
  • Rakendus tugineb paste või input sündmustele, mida skanneri klahvivajutused ei käivita oodatud viisil
  • Sisendimask või valideerimise regulaaravaldis lükkab skannitud sisus oleva kehtiva märgi tagasi
  • ENTER/TAB järelliide käivitab soovimatu toimingu (vormi enneaegne saatmine, modaali sulgemine, mujale navigeerimine)
  • Skannimine toimub kiiremini, kui viivitusega või piiratud sisenditöötleja iga klahvivajutuse registreerida jõuab

Diagnostika töövoog

  1. Avage samas brauseris klaviatuurisündmuste tester ja skannige vöötkood. Kui iga märk logitakse siin õigesti, saavad brauser ja operatsioonisüsteem sündmused kätte ning viga on teie rakenduse sündmuste käsitlemises.
  2. Kontrollige, kas teie sisendväli on päris töövoos vahetult enne skannimist fookuses (mitte ainult siis, kui klõpsate seda testimiseks käsitsi).
  3. Avage brauseri DevTools konsool ja otsige skannimise ajal visatud JavaScripti vigu — töötleja keskel visatud viga võib edasiste klahvivajutuste töötlemise vaikselt peatada.
  4. Eemaldage ajutiselt sisendimask, valideerimine või viivitusloogika ja testige uuesti, et eraldada, milline kiht sisendi kaotab.
  5. Kontrollige, kas teie rakendus kuulab keypress sündmust (iganenud ja mõne klahvi puhul ebausaldusväärne) keydown/keyup asemel.

Kuidas parandada

  • Tagage, et sihtväli fokuseeritakse programmiliselt alati, kui töövoog ootab skannimist (näiteks kohe pärast rea lisamist)
  • Asendage keypress kuulajad keydown/keyup kuulajatega, sest keypress on iganenud ja käsitleb mõnda klahvi ebajärjekindlalt
  • Vaadake üle kõik preventDefault() väljakutsed klaviatuuritöötlejates, et need ei blokeeriks õigustatud märgiklahve
  • Lõdvendage sisendimaske ja valideerimist, et need aktsepteeriksid kogu märgivahemikku, mida teie vöötkoodisümboloogiad võivad toota, ja valideerige seejärel kokku pandud väärtus, mitte üksikud klahvivajutused
  • Sobitage skanneri järelliide sellega, mida teie vorm ootab (vt ENTER- ja TAB-järelliited)

Seotud tööriistad

Klaviatuurisündmuste tester · Vöötkoodisisendi tester