Barcode Scanner Emulator
Skaner działa w Notatniku, ale nie w POS
To jeden z najczęściej zgłaszanych problemów z kodami kreskowymi i prawie zawsze oznacza, że skaner oraz połączenie są w porządku. Błąd leży w tym, jak aplikacja obsługuje wprowadzanie z klawiatury.
Problem
Skan do zwykłego edytora tekstu za każdym razem daje poprawną wartość, ale skan do systemu POS, aplikacji webowej albo narzędzia wewnętrznego nie daje nic, daje częściowe wprowadzanie albo złe zachowanie.
Możliwe przyczyny
- Pole docelowe nie ma fokusu klawiatury w chwili skanu albo fokus jest na elemencie, który nie jest polem wprowadzania
- Procedura
keydownwywołujepreventDefault()w sposób blokujący wprowadzanie znaków - Aplikacja polega na zdarzeniach
pastealboinput, których naciśnięcia klawiszy skanera nie wywołują tak, jak oczekujesz - Maska wprowadzania albo wyrażenie regularne walidacji odrzuca poprawny znak w zeskanowanym ładunku
- Sufiks ENTER/TAB wywołuje niezamierzoną akcję (zbyt wczesne wysłanie formularza, zamknięcie okna modalnego, przejście gdzie indziej)
- Skan jest szybszy, niż opóźniona lub ograniczona procedura wprowadzania zdąży zarejestrować każde naciśnięcie
Przepływ diagnostyki
- Otwórz tester zdarzeń klawiatury w tej samej przeglądarce i zeskanuj kod. Jeśli każdy znak jest tu poprawnie rejestrowany, przeglądarka i system operacyjny odbierają zdarzenia dobrze, więc błąd jest w obsłudze zdarzeń aplikacji.
- Sprawdź, czy w prawdziwym przepływie pole ma fokus tuż przed skanem, a nie tylko wtedy, gdy klikasz je ręcznie na potrzeby testu.
- Otwórz konsolę DevTools przeglądarki i sprawdź błędy JavaScript rzucone podczas skanu. Błąd w środku procedury może po cichu zatrzymać przetwarzanie dalszych naciśnięć.
- Tymczasowo usuń maskę wprowadzania, walidację albo logikę debounce i przetestuj ponownie, aby wyizolować warstwę, która gubi wprowadzanie.
- Sprawdź, czy aplikacja nasłuchuje
keypress(przestarzałe i zawodne dla części klawiszy) zamiastkeydown/keyup.
Jak naprawić
- Zapewnij programowe ustawienie fokusu na polu docelowym, gdy przepływ oczekuje skanu (na przykład zaraz po dodaniu pozycji)
- Zastąp nasłuchiwanie
keypressprzezkeydown/keyup, bokeypressjest przestarzałe i niespójnie obsługuje część klawiszy - Przejrzyj wywołania
preventDefault()w procedurach klawiatury, aby nie blokowały prawidłowych klawiszy znaków - Poluzuj maski i walidację, aby przyjmowały pełny zakres znaków, jaki mogą dać symboliki kodów, a potem waliduj złożoną wartość, a nie pojedyncze naciśnięcia
- Dopasuj sufiks skanera do tego, czego oczekuje formularz (zobacz Sufiksy ENTER i TAB)
Powiązane narzędzia
Tester zdarzeń klawiatury · Tester wprowadzania kodów kreskowych