Barcode Scanner Emulator
Skeneris darbojas piezīmju blokā, bet ne POS
Šī ir viena no visbiežāk ziņotajām svītrkodu problēmām, un gandrīz vienmēr skeneris un savienojums ir kārtībā — kļūda ir tajā, kā lietojumprogramma apstrādā tastatūras ievadi.
Problēma
Skenēšana vienkāršā teksta redaktorā katru reizi dod pareizo vērtību, bet skenēšana POS sistēmā, tīmekļa lietotnē vai iekšējā rīkā nedod neko, dod daļēju ievadi vai nepareizu uzvedību.
Iespējamie cēloņi
- Mērķa laukam skenēšanas brīdī nav tastatūras fokusa vai fokuss ir uz elementa, kas nav ievade
keydownapstrādātājs izsaucpreventDefault()tā, ka bloķē rakstzīmju ievadi- Lietotne paļaujas uz
pastevaiinputnotikumiem, kurus skenera taustiņu spiedieni dabiski neizraisa tā, kā jūs sagaidāt - Ievades maska vai validācijas regulārā izteiksme noraida derīgu rakstzīmi skenētajos datos
- ENTER/TAB piedēklis izraisa neparedzētu darbību (par agru veidlapas iesniegšanu, modālā loga aizvēršanu, pāriešanu citur)
- Skenēšana notiek ātrāk, nekā aizturēts vai ierobežots ievades apstrādātājs paspēj reģistrēt katru taustiņa spiedienu
Diagnostikas gaita
- Tajā pašā pārlūkā atveriet tastatūras notikumu testētāju un skenējiet svītrkodu. Ja šeit katra rakstzīme tiek reģistrēta pareizi, pārlūks un operētājsistēma notikumus saņem labi, tāpēc kļūda ir lietotnes notikumu apstrādē.
- Pārbaudiet, vai īstajā darbplūsmā ievades lauks ir fokusā tieši pirms skenēšanas, nevis tikai tad, kad testēšanai uzklikšķināt uz tā manuāli.
- Atveriet pārlūka DevTools konsoli un pārbaudiet, vai skenēšanas laikā netiek mesti JavaScript kļūdu izņēmumi — kļūda apstrādātāja vidū var klusi apturēt turpmāko taustiņu apstrādi.
- Uz laiku noņemiet ievades masku, validāciju vai aiztures loģiku un testējiet vēlreiz, lai izolētu, kurš slānis met ievadi.
- Pārbaudiet, vai lietotne klausās
keypress(novecojis un dažiem taustiņiem neuzticams), neviskeydown/keyup.
Kā labot
- Nodrošiniet, ka mērķa lauks tiek programmātiski fokusēts ikreiz, kad darbplūsma sagaida skenējumu (piemēram, tūlīt pēc rindas pievienošanas)
- Aizstājiet
keypressklausītājus arkeydown/keyup, jokeypressir novecojis un dažus taustiņus apstrādā nekonsekventi - Pārskatiet visus
preventDefault()izsaukumus tastatūras apstrādātājos, lai tie nebloķētu likumīgus rakstzīmju taustiņus - Atslābiniet ievades maskas un validāciju, lai pieņemtu visu rakstzīmju diapazonu, ko var radīt jūsu simbolikas, un validējiet salikto vērtību, nevis atsevišķus taustiņu spiedienus
- Saskaņojiet skenera piedēkli ar to, ko sagaida veidlapa (skatiet ENTER un TAB piedēkļus)