条码扫描器其实就是一种输入设备,跟键盘一样。在控制台打印扫描过程,可以看出,扫描过程就像是在键盘上敲击相应的键,keycode和键盘是一一对应的,只是输入速度(间隔时间)比物理键盘输入要快得多。我们可以通过监听输入间隔时间,来判断到底是键盘输入还是扫描输入。

扫码枪输入的时间间隔一般在10毫秒以内,物理键盘输入要远大于这个数值,通常为80毫秒以上。因此,当输入间隔时间小于30毫秒时,判断为扫码枪输入,其余情况判断为键盘输入。
let lastTime = null;
let nextTime = null;
let code = '';
document.onkeydown = function (e) {
  let keycode = e.keyCode || e.which || e.charCode;
  nextTime = new Date();
  if (keycode === 13) {
    if (lastTime && (nextTime - lastTime < 30)) {
      // 扫码枪
      // do something
    } else {
      // 键盘
      // do something
    }
    code = '';
    lastTime = null;
    e.preventDefault();
  } else {
    if (!lastTime) {
      code = String.fromCharCode(keycode);
    } else {
      if (nextTime - lastTime < 30) {
        code += String.fromCharCode(keycode);
      } else {
        code = '';
      }
    }
    lastTime = nextTime;
  }
};

 转载:https://www.jianshu.com/p/3019858e3cad

相关文章:

  • 2022-12-23
  • 2021-07-09
  • 2021-12-31
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-09-06
猜你喜欢
  • 2022-12-23
  • 2021-09-22
  • 2022-12-23
  • 2021-11-03
  • 2021-06-05
  • 2021-11-07
  • 2021-05-06
相关资源
相似解决方案