js 扫码枪的输入

Posted yyh1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js 扫码枪的输入相关的知识,希望对你有一定的参考价值。

关于js 获取扫码枪的输入获取方式,之前在网上搜了好多,都是大同小异的,都是说扫码枪输入的时间间隔不会超过30毫秒。但事实上我拿了几台电脑测试的结果是,有的时间间隔甚至超过了100毫秒,所以用时间间隔去判断是人工输入还是扫码枪输入,感觉还是不怎么理想,所以我换了一种逻辑去实现获取扫码枪的输入,代码如下:

    scanCode() 
      let code = ‘‘
      let lastTime, nextTime
      let lastCode, nextCode
      let that = this
      window.document.onkeypress = function(e) 
        if (window.event)  // IE
          nextCode = e.keyCode
         else if (e.which)  // Netscape/Firefox/Opera
          nextCode = e.which
        
        if (e.which === 13) 
          if (code.length < 3) return // 手动输入的时间不会让code的长度大于2,所以这里只会对扫码枪有
          console.log(code)
          console.log(‘扫码结束‘)
          // that.distinguishCode(code) // 获取到扫码枪输入的内容,做别的操作
          code = ‘‘
          lastCode = ‘‘
          lastTime = ‘‘
          return
        
        nextTime = new Date().getTime()
        if (!lastTime && !lastCode) 
          console.log(‘扫码开始。。。‘)
          code += e.key
        

        if (lastCode && lastTime && nextTime - lastTime > 500)  // 当扫码前有keypress事件时,防止首字缺失
          console.log(‘防止首字缺失。。。‘)
          code = e.key
         else if (lastCode && lastTime) 
          console.log(‘扫码中。。。‘)
          code += e.key
        
        lastCode = nextCode
        lastTime = nextTime
      
    

 

以上是关于js 扫码枪的输入的主要内容,如果未能解决你的问题,请参考以下文章

C#textbox控件区分扫码枪输入和键盘输入

C#textbox控件区分扫码枪输入和键盘输入

Android带扫码枪的手持终端,怎样截获扫描内容,扫描内容是通过键值上报的?

小程序开发wx.scanCode扫一扫接口,可以代替部分扫码枪的工作了

uniapp 开发笔记

阿凡达蓝牙扫码枪怎么连接安卓手机