Как внутри вкладки выполнить определенный код после успешного скана баркода?

У меня есть локальный сайт который открывает человек с подключенным сканером и я хотел бы выполнять определенный js(модальное окно например показывать) после того, как сканнер успешно обработает баркод.

Подскажите, как работает сканнер в вебе(на какое действие его можно тригерить) и каким образом это лучше делать.
В идеале хотел бы без дополнительных библиотек.

Спасибо.
  • Вопрос задан
  • 385 просмотров
Пригласить эксперта
Ответы на вопрос 2
kocherman
@kocherman
В 2007г авотматизировал мини-магазин с подобным сканером. Не помню модель (короче, самый дешевый, только шнур USB и неотключаемая пищалка). Драйверов отдельных вроде не требовалось, сканер определялся как Numpad-клавиатура. Собственно сканер тупо набирал отсканированный номер как на обычной клавиатуре. Обработать событие не проблема хоть в браузере, хоть в терминале. Причем оператор может отсканировать код, а может набрать на клавиатуре вручную - и разницы никакой нету, то есть вот это гораздо сложнее отследить, чем просто событие "скана".
Ответ написан
Приветствую!
Буквально пару месяцев назад решал такую задачу, писал небольшое web-приложение для инвентаризации магазина.
Логику сделал следующую:
добавил глобальной событие на "keydown", и в нём делал фокус на скрытый input.
на самом input'е также установлено событие на нажатие клавиши "Enter". Так как сканер баркодов, после отправки кода также эммулирует нажатие клавиши "Enter", то есть, как бы завершает ввод.
И уже в событие у input'а, на "Enter", запускается функция, в который и происходят различные проверки введённой информации.
Вот пример глобального события:
window.addEventListener("keydown", function() {
  try {
    if (window.editing) return;
    let obj = document.getElementById("barcode");
    if (window.searched) obj.value = "";
    window.searched = false;
    obj.focus();
  } catch (e) {
    console.log(e);
  }
});

тут меня происходят некоторые вспомогательные проверки, например:
если открыто какое-то модальное окошко для редактирования чего-то там, то не переводит фокус при нажатии клавиш (выполнении функции останавливается);
потом происходит непосредственно фокус в нужный input:
далее проверка на переменную searched, этой переменной присваивается true в функции, которая проверяет введённые данные (при событии onEnter), тут происходит очистка поля, для нового скана. Так как дело в том, что когда сканер отправляет например 13ти значный код, то после каждой цифры происходит события "keydown".

Вот как-то так.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы