Вопрос:
Я пытаюсь отсканировать некоторый штрих-код в текстовое поле, содержащееся в моем браузере, но он открывает страницу загрузки в любом браузере (хром, firefox, т.е.). Я предполагаю, что есть некоторый входной эквивалент CTRL + J, который запускает браузер, чтобы открыть страницу загрузки.
Кто-нибудь сталкивался с этой проблемой? Есть ли способ передать его (при условии, что мои клиенты не могут изменить конфигурацию своего сканера, ни конфигурацию браузера)?
Благодарю.
Ответ №1
Вам нужно настроить сканеры.
Ctrl-J = 0x0A = Linefeed for Unix-like Systems
Для этого проверьте мануалы вашей модели сканера. Обычно вы можете найти там некоторые штрих-коды, которые меняют ваши настройки, иначе вы должны изменить свой драйвер или у вас есть настройки для вашего драйвера.
Ответ №2
Хотя уже поздно публиковать ответ, я надеюсь, что это поможет кому-то в будущем.
Проблема связана с символом конца, отправленным из считывателя штрих-кода. По умолчанию мой считыватель штрих-кодов отправляет CR+LF после ввода. Это, к сожалению, открывает страницу загрузки в хроме. Исправить это очень просто, вместо настройки самого сканера (что может быть сложно), вы можете добавить на свою страницу следующий сценарий, чтобы игнорировать конечный символ, отправленный со сканера штрих-кода:
<script> document.addEventListener(‘keydown’, function(event) { if( event.keyCode == 13 || event.keyCode == 17 || event.keyCode == 74 ) event.preventDefault(); }); </script>
Также была обнаружена старая ошибка с хром, но это было закрыто/не разрешено, поскольку это не ошибка, а проблема с конфигурацией ввода.
Ответ №3
Проблема может быть решена, если проверить, что e.ctrlKey true, тогда мы можем игнорировать keypress. Если нажата клавиша Ctrl e.ctrlKey true
<script> let data = » window.onload = function () { window.document.body.addEventListener(‘keydown’, function(event){ if( event.keyCode == 13 || event.keyCode == 16 || event.keyCode == 17 ) { event.preventDefault(); return; } if(event.ctrlKey) { event.preventDefault(); return; } data += event.key console.log(data) }); } </script>
Используя этот код, мы можем предотвратить переход хром на страницу загрузки.
Ответ №4
У меня проблема только с хром. Фокус Firefox переходит в панель поиска Google после первого успешного снимка. У меня есть читатель штрих-кода Манхэттена. На данный момент мне удалось использовать Web (также известный как прозрение), это единственный, который он работает, но он не является “общим предложением клиента”,
Ответ №5
Включение управления подобно (event.keyCode == 13 || event.keyCode == 17 || event.keyCode == 74) не будет исправлять проблему. Потому что, если значение штрих-кода имеет символ “J”, вы не сможете получить результат barcode. Мы пытаемся добавить дополнительный e.ctrlKey управления e.ctrlKey. Но на этот раз мы извлекаем только один символ из штрих-кода. Кажется, что решить проблему через js сложно. Возможно, лучшим вариантом является изменение настроек сканера.
Ответ №6
Вы можете попробовать Internet Explorer 11 или следовать ответу Мустафы Сабира, это нормально для Манхэттена SD313B.
Ответ №7//I managed to focus on exactly what was being sent by Chrome, and ignore just that: var lastKeyCode = «»; document.addEventListener(‘keydown’, function (event) { if (lastKeyCode == «ControlLeft» && event.code == «KeyJ») event.preventDefault(); lastKeyCode = event.code; });