VUE实现无需输入框无焦点,网页监听扫码枪并且获取结果

原理

扫码枪本质就是一个快速输入+回车(注意:扫码输入法要设置英文,不然会乱码)

全局安装

import scanner from './install';
Vue.use(scanner);

使用

export default {
  data () {
    return {
      items:[],             //扫码结果
      isStart:false         //是否开启扫码
    }
  },
  mounted(){
  this.startScannerHandler();
  },
  methods:{
    startScannerHandler(){
      if(!this.isStart){
        this._scanner=this.$scanner({callback:v=>{
          this.items.push(v);
        }});
      }else{
        this._scanner.cancel();
      }
      this.isStart=!this.isStart;
    }
  }
}

创建install.js

export default {
  install(Vue) {
    Vue.prototype.$scanner = function (options) {
      var _this = this;
      if (_this._callback) {
        return;
      }
      var opt = Object.assign({
        delay: 1000,  // 时间太短会还没输入完成,根据测试情况修改
        endChar: 'Enter',
        callback: null
      }, options)
      var fn = {
        cancel: function () {
          if (_this._callback)
            document.documentElement.removeEventListener('keypress', _this._callback);
          delete _this._callback;
        }
      };
      _this._callback = function (e) {
        var result = _this._result || '';
        var _start = _this._start || new Date();
        var now = new Date();
        if ((now.getTime() - _start.getTime()) > opt.delay) {
          _start = now;
          result = '';
        }
        var keyVal = `${String.fromCharCode(e.which)}`;
        if (e.key == opt.endChar) {
          _this._result = '';
          opt.callback && opt.callback(result);
          return;
        }
        result += keyVal;
        _this._result = result;
        _this._start = _start;
      };
      document.documentElement.addEventListener('keypress', _this._callback);
      return fn;
    };
  }
};
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue 是一个用于构建用户界面的渐进式 JavaScript 框架,Vue 扫码能够实现焦点捕获扫码输入。 扫码是一种硬件设备,它能够将二维码或条形码的信息转化为可识别的数据。传统上,为了使用扫码,用户需要将光标聚焦于输入框中,然后才能够将扫码对准二维码或条形码进行扫描。然而,使用 Vue 扫码插件,我们能够实现焦点捕获扫码输入的功能。 通过在 Vue 组件中使用合适的库或插件,我们可以实现这一功能。这样做的原理是将扫码的扫描结果直接传递给指定输入框,而不需要用户手动聚焦于输入框中。 在 Vue 的生命周期钩子中,我们可以监听扫码设备的事件,如 "scan"。当扫码扫描到二维码或条形码时,将触发这个事件。我们可以在这个事件中通过 JavaScript 来处理扫描结果,然后将其赋值给指定的输入框。 同时,我们可以借助 Vue 的双向数据绑定功能,实现扫码扫描结果的值动态更新到其他需要使用这个值的地方。 需要注意的是,为了确保无焦点捕获扫码输入的功能正常工作,我们需要在 Vue 组件中的对应输入框上添加适当的事件监听器,以便识别到扫码的输入。 总的来说,通过使用 Vue 扫码插件和相关的库或插件,我们可以实现焦点捕获扫码输入的功能,提高用户的扫码体验和输入效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值