Пређи на садржај

Barcode Scanner Emulator

Скенер ради у Notepad-у, али не у POS-у

Ово је један од најчешће пријављених проблема са бар-кодовима и готово увек значи да су скенер и веза у реду — грешка је у томе како апликација обрађује унос са тастатуре.

Проблем

Скенирање у обичан уређивач текста сваки пут даје исправну вредност, али скенирање у POS систем, веб-апликацију или интерни алат не даје ништа, даје делимичан унос или погрешно понашање.

Могући узроци

  • Циљно поље нема фокус тастатуре у тренутку скенирања или је фокус на елементу који није поље за унос
  • Обрађивач keydown позива preventDefault() на начин који блокира унос знакова
  • Апликација се ослања на догађаје paste или input, које притисци скенера природно не покрећу онако како очекујете
  • Улазна маска или регуларни израз за проверу одбацује важећи знак у скенираном садржају
  • Суфикс ENTER/TAB покреће нежељену радњу (прерано слање обрасца, затварање модалног прозора, одлазак на друго место)
  • Скенирање је брже него што обрађивач уноса са debounce или throttle стигне да забележи сваки притисак

Дијагностички ток

  1. У истом прегледачу отворите тестер догађаја тастатуре и скенирајте бар-код. Ако се овде сваки знак исправно забележи, прегледач и оперативни систем примају догађаје како треба, па је грешка у обради догађаја у апликацији.
  2. Проверите да ли поље за унос има фокус непосредно пре скенирања у стварном току (не само када на њега ручно кликнете током теста).
  3. Отворите конзолу DevTools у прегледачу и потражите грешке JavaScript избачене током скенирања — грешка усред обрађивача може тихо да заустави обраду даљих притисака.
  4. Привремено уклоните улазну маску, проверу или логику debounce и поново тестирајте да изолујете слој који одбацује унос.
  5. Проверите да ли апликација слуша keypress (застарело и непоуздано за неке тастере) уместо keydown/keyup.

Како поправити

  • Обезбедите да циљно поље програмски добије фокус кад год ток очекује скенирање (на пример одмах после додавања ставке)
  • Замените слушаоце keypress са keydown/keyup, јер је keypress застарео и неке тастере обрађује недоследно
  • Прегледајте позиве preventDefault() у обрађивачима тастатуре да не блокирају оправдане знаковне тастере
  • Олабавите улазне маске и проверу да прихватају цео опсег знакова који ваше симбологије бар-кодова могу да дају, па проверавајте састављену вредност, а не појединачне притиске
  • Ускладите суфикс скенера са оним што образац очекује (погледајте Суфикси ENTER и TAB)

Повезани алати

Тестер догађаја тастатуре · Тестер уноса бар-кодова