Barcode Scanner Emulator
Čtečka funguje v Notepad, ale ne v POS
Jde o jeden z nejčastěji hlášených problémů s čárovými kódy a téměř vždy to znamená, že čtečka i připojení jsou v pořádku — chyba je v tom, jak aplikace zpracovává vstup z klávesnice.
Problém
Sken do obyčejného textového editoru pokaždé dá správnou hodnotu, ale sken do systému POS, webové aplikace nebo interního nástroje nedá nic, dá jen část vstupu, nebo se chová špatně.
Možné příčiny
- Cílové pole v okamžiku skenu nemá fokus klávesnice, nebo je fokus na prvku, který není vstupní
- Obsluha
keydownvolápreventDefault()tak, že blokuje zadání znaků - Aplikace spoléhá na události
pasteneboinput, které stisky čtečky nespouštějí tak, jak čekáte - Vstupní maska nebo ověřovací výraz odmítne platný znak v naskenovaném obsahu
- Přípona ENTER/TAB spustí nezamýšlenou akci (předčasné odeslání formuláře, zavření modálního okna, odchod ze stránky)
- Sken je rychlejší, než stihne obsluha s potlačením opakování nebo omezením frekvence zaznamenat každý stisk
Diagnostický postup
- Otevřete tester událostí klávesnice ve stejném prohlížeči a naskenujte kód. Pokud se zde každý znak zapíše správně, prohlížeč i operační systém události dostávají v pořádku a chyba je ve zpracování událostí vaší aplikace.
- Zkontrolujte, zda má vstupní pole fokus těsně před skenem ve skutečném postupu (nejen když na něj při testu kliknete ručně).
- Otevřete konzoli DevTools v prohlížeči a hledejte chyby JavaScriptu vyhozené během skenu — chyba uprostřed obsluhy může tiše zastavit zpracování dalších stisků.
- Dočasně odeberte vstupní masku, ověření nebo logiku potlačení opakování a test zopakujte, abyste izolovali vrstvu, která vstup zahazuje.
- Zkontrolujte, zda aplikace poslouchá
keypress(zastaralé a u některých kláves nespolehlivé) místokeydown/keyup.
Jak to opravit
- Zajistěte, aby se cílové pole programově zaměřilo, kdykoli postup sken očekává (například hned po přidání řádku)
- Nahraďte posluchače
keypressudálostmikeydown/keyup, protožekeypressje zastaralé a některé klávesy zpracovává nekonzistentně - Zkontrolujte volání
preventDefault()v obsluhách klávesnice, aby neblokovala legitimní znakové klávesy - Uvolněte masky a ověření tak, aby přijímaly celý rozsah znaků, který vaše symbologie mohou vytvořit, a ověřujte sestavenou hodnotu, ne jednotlivé stisky
- Slaďte příponu čtečky s tím, co formulář očekává (viz Přípony ENTER a TAB)