Przejdź do treści

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 keydown wywołuje preventDefault() w sposób blokujący wprowadzanie znaków
  • Aplikacja polega na zdarzeniach paste albo input, 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

  1. 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.
  2. Sprawdź, czy w prawdziwym przepływie pole ma fokus tuż przed skanem, a nie tylko wtedy, gdy klikasz je ręcznie na potrzeby testu.
  3. 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ęć.
  4. Tymczasowo usuń maskę wprowadzania, walidację albo logikę debounce i przetestuj ponownie, aby wyizolować warstwę, która gubi wprowadzanie.
  5. Sprawdź, czy aplikacja nasłuchuje keypress (przestarzałe i zawodne dla części klawiszy) zamiast keydown/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 keypress przez keydown/keyup, bo keypress jest 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