Barcode Scanner Emulator
Scanerul funcționează în Notepad, dar nu în POS
Aceasta este una dintre problemele de coduri de bare cel mai des raportate și înseamnă aproape întotdeauna că scanerul și conexiunea sunt în regulă. Eroarea este în felul în care aplicația tratează introducerea de la tastatură.
Problemă
Scanarea într-un editor de text simplu produce de fiecare dată valoarea corectă, dar scanarea în sistemul POS, în aplicația web sau într-un instrument intern nu produce nimic, produce introducere parțială sau un comportament greșit.
Cauze posibile
- Câmpul țintă nu are focalizarea tastaturii în momentul scanării sau focalizarea este pe un element care nu este de introducere
- Un gestionar
keydownapeleazăpreventDefault()într-un fel care blochează introducerea caracterelor - Aplicația se bazează pe evenimente
pastesauinputpe care apăsările scanerului nu le declanșează cum vă așteptați - O mască de introducere sau o expresie regulată de validare respinge un caracter valid din sarcina scanată
- Sufixul ENTER/TAB declanșează o acțiune nedorită (trimiterea prea devreme a formularului, închiderea unui modal, navigarea în altă parte)
- Scanarea este mai rapidă decât poate un gestionar cu debounce sau throttle să înregistreze fiecare apăsare
Flux de diagnostic
- Deschideți testerul de evenimente de tastatură în același browser și scanați codul. Dacă fiecare caracter este înregistrat corect aici, browserul și sistemul de operare primesc evenimentele bine, deci eroarea este în tratarea evenimentelor din aplicație.
- Verificați dacă câmpul de introducere are focalizare chiar înainte de scanare în fluxul real, nu doar când faceți clic pe el manual pentru test.
- Deschideți consola DevTools a browserului și căutați erori JavaScript aruncate în timpul scanării. O eroare la mijlocul gestionarului poate opri în tăcere prelucrarea apăsărilor următoare.
- Îndepărtați temporar masca, validarea sau logica de debounce și testați din nou ca să izolați stratul care pierde introducerea.
- Verificați dacă aplicația ascultă
keypress(învechit și nesigur pentru unele taste) în loc dekeydown/keyup.
Cum se remediază
- Asigurați focalizarea programatică a câmpului țintă ori de câte ori fluxul așteaptă o scanare (de exemplu imediat după adăugarea unei linii)
- Înlocuiți ascultătorii
keypresscukeydown/keyup, fiindcăkeypresseste învechit și tratează inconsecvent unele taste - Revizuiți apelurile
preventDefault()din gestionarii de tastatură ca să nu blocheze taste de caracter legitime - Relaxați măștile și validarea ca să accepte toată gama de caractere pe care o pot produce simbologiile, apoi validați valoarea asamblată, nu fiecare apăsare
- Potriviți sufixul scanerului cu ce așteaptă formularul (vedeți Sufixe ENTER și TAB)
Instrumente înrudite
Tester de evenimente de tastatură · Tester de introducere a codurilor de bare