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
keydowntöötleja kutsubpreventDefault()viisil, mis blokeerib märkide sisestamise- Rakendus tugineb
pastevõiinputsü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
- 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.
- Kontrollige, kas teie sisendväli on päris töövoos vahetult enne skannimist fookuses (mitte ainult siis, kui klõpsate seda testimiseks käsitsi).
- Avage brauseri DevTools konsool ja otsige skannimise ajal visatud JavaScripti vigu — töötleja keskel visatud viga võib edasiste klahvivajutuste töötlemise vaikselt peatada.
- Eemaldage ajutiselt sisendimask, valideerimine või viivitusloogika ja testige uuesti, et eraldada, milline kiht sisendi kaotab.
- Kontrollige, kas teie rakendus kuulab
keypresssündmust (iganenud ja mõne klahvi puhul ebausaldusväärne)keydown/keyupasemel.
Kuidas parandada
- Tagage, et sihtväli fokuseeritakse programmiliselt alati, kui töövoog ootab skannimist (näiteks kohe pärast rea lisamist)
- Asendage
keypresskuulajadkeydown/keyupkuulajatega, sestkeypresson 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)