DOM перезагружается при вводе сканера штрих-кода

#javascript #dom #reload #barcode-scanner #event-listener

#javascript #dom #перезагрузка #сканер штрих-кода #прослушиватель событий

Вопрос:

У меня есть приложение, которое работает со сканером штрих-кода. Сканер штрих-кода взаимодействует с компьютером так, как это делала бы внешняя клавиатура, поэтому я поместил прослушиватель событий keydown в DOM для захвата ввода со сканера штрих-кода и пометки соответствующего элемента в dom. Теперь моя проблема в том, что каждый раз, когда считывается штрих-код, dom, похоже, обновляет и очищает весь выбор. Кто-нибудь может помочь? Это мой код. Кстати, все это было сделано в electron

 document.addEventListener("keydown", (e) => {
  if (e.key === "" || e.key === "Control") {
    return
  }

  buffer.push(e.key);

  setTimeout(() => {

    if (buffer.length > 0) {
      buffer.forEach((char) => {
        string = string   char
      })

      if (buffer.length >= 12) {

        const tableRows = document.querySelector("tbody").querySelectorAll("tr");
        tableRows.forEach((row) => {

          const barcode = row.querySelector(".td_Barcode--hidden").innerText;

          if (barcode === string) {
            toggleRowCB(row)
          }

        })
      } else {
        console.log(buffer.length);
      }
    }

    buffer = [];
    string = "";

  }, 500)

})
 

Комментарии:

1. Ничто здесь не должно привести к перезагрузке страницы браузером. Не могли бы вы предоставить свой HTML, а также любой другой соответствующий JavaScript?

2. @JustinTaddei Это было сделано в electron

Ответ №1:

Код кажется нормальным, но можете ли вы попробовать добавить

e.preventDefault();

для отправки. Я думаю, что когда вы сканируете штрих-код с помощью сканера штрих-кода, он имитирует чтение «Ввод», которые обходят ваши условия e.key.

Предложение пакета для обработки событий электронной клавиатуры;

Комментарии:

1. Привет. Я думаю, что я только что понял проблему. Предполагается, что функция toggleRowCB() выполняет цикл по dom и активирует флажки строк с таким штрих-кодом. Я думаю, что dom обновляется после выполнения этой проверки, в результате чего ранее выполненные проверки будут удалены. Есть ли способ обойти это, пожалуйста?