【问题标题】:DOM Reloads on Barcode Scanner Input条码扫描器输入上的 DOM 重新加载
【发布时间】:2021-01-08 07:24:57
【问题描述】:

我有一个适用于条形码扫描仪的应用程序。条形码扫描仪以外部键盘的方式与计算机通信,因此我在 DOM 上放置了一个 keydown 事件侦听器,以捕获来自条形码扫描仪的输入并在 dom 中标记相应的项目。现在我的问题是,每当读入条形码时,dom 似乎都会刷新并清除所有选择。有人可以帮忙吗?这是我的代码。顺便说一下,所有这些都是在电子中完成的

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)

})

【问题讨论】:

  • 这里没有什么会导致浏览器重新加载页面。请您提供您的 HTML 以及任何其他相关的 JavaScript 吗?
  • @JustinTaddei 这是在电子中完成的

标签: javascript dom reload barcode-scanner event-listener


【解决方案1】:

代码看起来不错,但你可以尝试添加

e.preventDefault();

用于提交。我认为当您使用条形码扫描仪扫描条形码时,它会模仿阅读 +“Enter”,从而绕过您的 e.key 条件。

电子键盘事件处理的包建议;

【讨论】:

  • 嗨。我想我只是想通了这个问题。 toggleRowCB() 函数应该循环遍历 dom 并激活带有此类条形码的行的复选框。我认为在检查完成后dom会刷新,导致之前进行的检查被清除。请问有办法解决吗?
猜你喜欢
  • 1970-01-01
  • 2020-12-03
  • 2021-07-10
  • 1970-01-01
  • 1970-01-01
  • 2023-02-04
  • 1970-01-01
  • 2013-06-29
  • 1970-01-01
相关资源
最近更新 更多