Barcode Scanner Emulator
Skener funguje v Notepade, ale nie v POS
Toto je jeden z najčastejšie hlásených problémov s čiarovými kódmi a takmer vždy znamená, že skener aj pripojenie sú v poriadku — chyba je v tom, ako aplikácia spracúva vstup z klávesnice.
Problém
Skenovanie do obyčajného textového editora zakaždým vytvorí správnu hodnotu, ale skenovanie do systému POS, webovej aplikácie alebo interného nástroja nevytvorí nič, len čiastočný vstup alebo nesprávne správanie.
Možné príčiny
- Cieľové pole nemá v čase skenu fokus klávesnice, alebo je fokus na prvku, ktorý nie je vstupom
- Obsluha
keydownvolápreventDefault()spôsobom, ktorý blokuje zadávanie znakov - Aplikácia sa spolieha na udalosti
pastealeboinput, ktoré stlačenia zo skenera prirodzene nespúšťajú tak, ako očakávate - Vstupná maska alebo validačný regulárny výraz odmietne platný znak v naskenovaných údajoch
- Prípona ENTER/TAB spustí nechcenú akciu (predčasné odoslanie formulára, zatvorenie modálneho okna, odchod inam)
- Sken prebehne rýchlejšie, než stihne obsluha vstupu s debounce alebo throttle zaregistrovať každé stlačenie
Diagnostický postup
- Otvorte tester udalostí klávesnice v tom istom prehliadači a naskenujte čiarový kód. Ak sa tu každý znak zaznamená správne, prehliadač aj operačný systém udalosti prijímajú v poriadku, takže chyba je v spracovaní udalostí vo vašej aplikácii.
- Skontrolujte, či je vstupné pole zamerané tesne pred skenom v skutočnom postupe (nielen keď naň pri testovaní kliknete ručne).
- Otvorte konzolu DevTools v prehliadači a skontrolujte chyby JavaScriptu vyhodené počas skenu — chyba uprostred obsluhy môže potichu zastaviť spracovanie ďalších stlačení.
- Dočasne odstráňte vstupnú masku, validáciu alebo logiku debounce a otestujte znova, aby ste izolovali vrstvu, ktorá vstup zahadzuje.
- Skontrolujte, či aplikácia počúva na
keypress(zastarané a pri niektorých klávesoch nespoľahlivé) namiestokeydown/keyup.
Ako opraviť
- Zabezpečte, aby bolo cieľové pole programovo zamerané vždy, keď postup očakáva sken (napríklad hneď po pridaní riadkovej položky)
- Nahraďte počúvače
keypressudalosťamikeydown/keyup, pretožekeypressje zastarané a niektoré klávesy spracúva nekonzistentne - Skontrolujte volania
preventDefault()v obsluhách klávesnice, aby neblokovali oprávnené znakové klávesy - Uvoľnite vstupné masky a validáciu tak, aby prijímali celý rozsah znakov, ktorý vaše symboliky čiarových kódov môžu vytvoriť, a potom validujte zostavenú hodnotu, nie jednotlivé stlačenia
- Zlaďte príponu skenera s tým, čo formulár očakáva (pozrite Prípony ENTER a TAB)