SQLRU.net
Разработка приложений баз данных

Начало » Программирование » HTML, JavaScript, VBScript, CSS » Символы 0A 0A на вводе приводят к ошибке
Символы 0A 0A на вводе приводят к ошибке [сообщение #5603] Tue, 22 October 2024 07:24 Переход к следующему сообщению
fraks в настоящее время не в онлайне  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 в настоящее время не в онлайне  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
Предыдущая тема: Сдвиг элемента HTML
Переход к форуму:
  


Текущее время: Thu Jun 25 20:31:15 GMT+3 2026

Общее время, затраченное на создание страницы: 0.01232 секунд