Barcode Scanner Emulator
Lukija toimii Notepadissa mutta ei POS-järjestelmässä
Tämä on yksi eniten ilmoitetuista viivakoodiongelmista, ja se tarkoittaa lähes aina, että lukija ja yhteys ovat kunnossa — virhe on siinä, miten sovelluksesi käsittelee näppäimistösyötettä.
Ongelma
Pelkkään tekstieditoriin lukeminen tuottaa joka kerta oikean arvon, mutta POS-järjestelmään, verkkosovellukseen tai sisäiseen työkaluun lukeminen ei tuota mitään, tuottaa osittaisen syötteen tai väärän toiminnan.
Mahdolliset syyt
- Kohdekentällä ei ole näppäimistökohdistusta lukuhetkellä, tai kohdistus on elementissä joka ei ole syöte
keydown-käsittelijä kutsuupreventDefault()-metodia tavalla, joka estää merkkien syötön- Sovellus nojaa
paste- taiinput-tapahtumiin, joita lukijan näppäilyt eivät laukaise odottamallasi tavalla - Syötemaski tai validointisäännöllinen lauseke hylkää luetussa sisällössä olevan kelvollisen merkin
- ENTER/TAB-pääte laukaisee tahattoman toiminnon (lomakkeen ennenaikainen lähetys, modaalin sulkeminen, siirtyminen pois)
- Luku tapahtuu nopeammin kuin viivästetty tai rajoitettu syötekäsittelijä ehtii rekisteröidä jokaisen näppäilyn
Diagnostiikan työnkulku
- Avaa näppäimistötapahtumien testaaja samassa selaimessa ja lue viivakoodi. Jos jokainen merkki kirjautuu tänne oikein, selain ja käyttöjärjestelmä vastaanottavat tapahtumat, joten virhe on sovelluksesi tapahtumien käsittelyssä.
- Tarkista, onko syötekenttäsi kohdistettuna juuri ennen lukua todellisessa työnkulussa (ei vain silloin, kun napsautat sitä käsin testausta varten).
- Avaa selaimen DevTools-konsoli ja etsi luvun aikana heitettyjä JavaScript-virheitä — käsittelijän keskellä heitetty virhe voi hiljaa pysäyttää myöhempien näppäilyjen käsittelyn.
- Poista tilapäisesti syötemaski, validointi tai viivelogiikka ja testaa uudelleen, jotta näet mikä kerros pudottaa syötteen.
- Tarkista, kuunteleeko sovelluksesi
keypress-tapahtumaa (vanhentunut ja joidenkin näppäinten osalta epäluotettava)keydown/keyup-tapahtumien sijaan.
Miten korjataan
- Varmista, että kohdekenttä kohdistetaan ohjelmallisesti aina, kun työnkulku odottaa lukua (esimerkiksi heti rivin lisäämisen jälkeen)
- Korvaa
keypress-kuuntelijatkeydown/keyup-kuuntelijoilla, koskakeypresson vanhentunut ja käsittelee joitakin näppäimiä epäjohdonmukaisesti - Käy läpi kaikki
preventDefault()-kutsut näppäinkäsittelijöissä ja varmista, etteivät ne estä oikeutettuja merkkinäppäimiä - Löysennä syötemaskeja ja validointia niin, että ne hyväksyvät koko merkkialueen, jota viivakoodisymboliikkasi voivat tuottaa, ja validoi sitten koottu arvo yksittäisten näppäilyjen sijaan
- Sovita lukijan pääte siihen, mitä lomakkeesi odottaa (katso ENTER- ja TAB-päätteet)
Aiheeseen liittyvät työkalut
Näppäimistötapahtumien testaaja · Viivakoodisyötteen testaaja