Barcode Scanner Emulator
Skaitytuvas veikia užrašinėje, bet ne POS
Tai viena dažniausiai pranešamų brūkšninių kodų problemų, ir beveik visada skaitytuvas bei jungtis yra tvarkingi — klaida yra tame, kaip programa apdoroja klaviatūros įvestį.
Problema
Nuskaitymas į paprastą teksto rengyklę kaskart duoda teisingą reikšmę, bet nuskaitymas į POS sistemą, žiniatinklio programą ar vidinį įrankį neduoda nieko, duoda dalinę įvestį arba neteisingą elgseną.
Galimos priežastys
- Tikslinis laukas nuskaitymo metu neturi klaviatūros fokuso arba fokusas yra ne įvesties elemente
keydownapdorotuvas iškviečiapreventDefault()taip, kad užblokuoja simbolių įvedimą- Programa remiasi
pastearbainputįvykiais, kurių skaitytuvo klavišų paspaudimai natūraliai nesukelia taip, kaip tikitės - Įvesties kaukė arba tikrinimo reguliarusis reiškinys atmeta galiojantį nuskaitytos apkrovos simbolį
- ENTER/TAB priesaga sukelia nenumatytą veiksmą (per anksti pateikia formą, uždaro modalinį langą, pereina kitur)
- Nuskaitymas vyksta greičiau, nei sulėtintas ar apribotas įvesties apdorotuvas spėja užregistruoti kiekvieną klavišo paspaudimą
Diagnostikos eiga
- Toje pačioje naršyklėje atidarykite klaviatūros įvykių testerį ir nuskaitykite brūkšninį kodą. Jei čia kiekvienas simbolis užregistruojamas teisingai, naršyklė ir operacinė sistema įvykius gauna gerai, todėl klaida yra programos įvykių apdorojime.
- Patikrinkite, ar tikroje darbo eigoje įvesties laukas sufokusuotas prieš pat nuskaitymą, o ne tik tada, kai testuodami jį spustelite ranka.
- Atidarykite naršyklės DevTools konsolę ir patikrinkite, ar nuskaitymo metu nemetamos JavaScript klaidos — klaida apdorotuvo viduryje gali tyliai sustabdyti tolesnių klavišų apdorojimą.
- Laikinai pašalinkite įvesties kaukę, tikrinimą ar delsos logiką ir testuokite iš naujo, kad išskirtumėte, kuris sluoksnis meta įvestį.
- Patikrinkite, ar programa klauso
keypress(nebenaudojamas ir kai kuriems klavišams nepatikimas), o nekeydown/keyup.
Kaip taisyti
- Užtikrinkite, kad tikslinis laukas būtų programiškai sufokusuotas, kai darbo eiga tikisi nuskaitymo (pavyzdžiui, iškart pridėjus eilutę)
keypressklausytojus pakeiskitekeydown/keyup, neskeypressnebenaudojamas ir kai kuriuos klavišus apdoroja nenuosekliai- Peržiūrėkite visus
preventDefault()iškvietimus klaviatūros apdorotuvuose, kad jie neblokuotų teisėtų simbolių klavišų - Atlaisvinkite įvesties kaukes ir tikrinimą, kad priimtų visą simbolių diapazoną, kurį gali sukurti jūsų simbologijos, ir tikrinkite surinktą reikšmę, o ne atskirus klavišų paspaudimus
- Skaitytuvo priesagą derinkite su tuo, ko tikisi forma (žr. ENTER ir TAB priesagas)
Susiję įrankiai
Klaviatūros įvykių testeris · Brūkšninio kodo įvesties testeris