Начало » Программирование » HTML, JavaScript, VBScript, CSS » Символы 0A 0A на вводе приводят к ошибке
| Символы 0A 0A на вводе приводят к ошибке [сообщение #5603] |
Tue, 22 October 2024 07:24  |
fraks
Сообщений: 153 Зарегистрирован: June 2022 Географическое положение: Новосибирск
|
Senior Member |
|
|
Имеется сканер штрихкодов, который работает как USB_HID (имитирует ввод с клавиатуры).
Написан информационный киоск, сканируется штрихкод, и получаем информацию о товаре.
Но это не важно, т.к. проблема даже с пустой страницей.
На товаре попался штрихкод, который типа как EAN13 но по факту Code 128 и в нем, после цифр штрихкода, добавлен перевод строки LF (0A).
В самом сканере запрограммировано:
префикс - BACKSPACE
суффикс - LF
Когда получаем штрихкод EAN13 то все хорошо.
Если мы получаем этот Code 128, содержащий в себе LF, то в браузере Firefox открывается консоль, с ошибкой
NotFoundError: No such JSProcessActor 'BrowserToolboxDevToolsProcess'
Непонятно, откуда берется эта ошибка, и что делать что бы два LF проходило нормально.
[Обновления: Tue, 22 October 2024 07:25] Известить модератора
|
|
|
|
| Re: Символы 0A 0A на вводе приводят к ошибке [сообщение #6351 является ответом на сообщение #5603] |
Thu, 25 June 2026 01:36  |
DarkMaster
Сообщений: 59 Зарегистрирован: August 2022
|
Member |
|
|
Ну попробуй вот такой хак (отслеживание LF+LF).
// чего нажимали перед событием
let lastKeyTime = 0;
let lastKey = '';
window.addEventListener('keydown', function(event) {
const currentTime = performance.now();
const isEnter = event.key === 'Enter' || event.keyCode === 13;
// текущая клавиша Enter? предыдущая тоже Enter?
if (isEnter && lastKey === 'Enter') {
// время между нажатиями в мс
const timeDiff = currentTime - lastKeyTime;
// тут скорее всего сканер (время нажатия очень мало)
if (timeDiff < 50) {
event.preventDefault(); // Блокируем стандартное действие браузера, иначе откроет DevTools
event.stopPropagation(); // стопаем событие, чтобы не лезло дальше
console.warn('LF+LF blocked...');
// reSet timer
lastKeyTime = currentTime;
return;
}
}
// запомним чего нажимали
lastKey = event.key === 'Enter' ? 'Enter' : event.key;
lastKeyTime = currentTime;
}, true); // true активирует фазу погружения (capturing) - перехват keydown
|
|
|
|
Переход к форуму:
Текущее время: Thu Jun 25 20:31:15 GMT+3 2026
Общее время, затраченное на создание страницы: 0.01232 секунд
|