Preskočiť na obsah

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 keydown volá preventDefault() spôsobom, ktorý blokuje zadávanie znakov
  • Aplikácia sa spolieha na udalosti paste alebo input, 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

  1. 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.
  2. Skontrolujte, či je vstupné pole zamerané tesne pred skenom v skutočnom postupe (nielen keď naň pri testovaní kliknete ručne).
  3. 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í.
  4. Dočasne odstráňte vstupnú masku, validáciu alebo logiku debounce a otestujte znova, aby ste izolovali vrstvu, ktorá vstup zahadzuje.
  5. Skontrolujte, či aplikácia počúva na keypress (zastarané a pri niektorých klávesoch nespoľahlivé) namiesto keydown/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 keypress udalosťami keydown/keyup, pretože keypress je 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)

Súvisiace nástroje

Tester udalostí klávesnice · Tester vstupu čiarových kódov