Към съдържанието

Barcode Scanner Emulator

Скенерът работи в Notepad, но не в POS

Това е един от най-често съобщаваните проблеми с баркодове и почти винаги означава, че скенерът и връзката са наред — грешката е в начина, по който приложението обработва въвеждането от клавиатура.

Проблем

Сканирането в обикновен текстов редактор всеки път дава правилната стойност, но сканирането в POS системата, уеб приложението или вътрешния инструмент не дава нищо, дава частично въвеждане или грешно поведение.

Възможни причини

  • Целевото поле няма фокус на клавиатурата в момента на сканирането, или фокусът е върху елемент, който не е за въвеждане
  • Обработчик на keydown вика preventDefault() по начин, който блокира въвеждането на знаци
  • Приложението разчита на събития paste или input, които натисканията на скенера не задействат както очаквате
  • Входна маска или израз за валидиране отхвърля валиден знак в сканирания полезен товар
  • Наставката ENTER/TAB задейства нежелано действие (преждевременно изпращане на формуляр, затваряне на модален прозорец, напускане на страницата)
  • Сканирането е по-бързо, отколкото обработчик с антидребезг или ограничение може да регистрира всяко натискане

Диагностичен процес

  1. Отворете тестера за клавишни събития в същия браузър и сканирайте баркода. Ако тук всеки знак се записва правилно, браузърът и операционната система получават събитията добре, така че грешката е в обработката на събития в приложението.
  2. Проверете дали полето за въвеждане има фокус точно преди сканирането в реалния процес (не само когато щракнете върху него ръчно за теста).
  3. Отворете конзолата DevTools на браузъра и потърсете грешки в JavaScript по време на сканирането — грешка по средата на обработчик може тихо да спре обработката на следващите натискания.
  4. Временно махнете входната маска, валидирането или логиката за антидребезг и тествайте отново, за да изолирате кой слой изпуска въвеждането.
  5. Проверете дали приложението слуша keypress (остаряло и ненадеждно за някои клавиши) вместо keydown/keyup.

Как да го поправите

  • Уверете се, че целевото поле получава фокус програмно винаги когато процесът очаква сканиране (например веднага след добавяне на ред)
  • Заменете слушателите на keypress с keydown/keyup, защото keypress е остаряло и обработва някои клавиши непоследователно
  • Прегледайте извикванията на preventDefault() в обработчиците на клавиатурата, за да не блокират валидни знакови клавиши
  • Освободете маските и валидирането, за да приемат пълния набор от знаци, който симбологиите могат да дадат, и валидирайте сглобената стойност, а не отделните натискания
  • Съгласувайте наставката на скенера с това, което формулярът очаква (вижте Наставки ENTER и TAB)

Свързани инструменти

Тестер за клавишни събития · Тестер за въвеждане на баркод