技术标签: html页面获取扫码枪参数
详情介绍
扫码枪相当于键盘输入设备,输入一连串数字后加一个enter键。
但在实际开发中需要区分是扫描枪输入还是键盘用户输入,区别在于扫码枪输入很快。let code = '';
let lastTime, nextTime;
let lastCode, nextCode;
window.document.onkeypress = (e) => {
if (window.event) { // IE
nextCode = e.keyCode;
} else if (e.which) { // Netscape/Firefox/Opera
nextCode = e.which;
}
if (nextCode === 13) {
if (code.length
console.log(code); // 获取到扫码枪输入的内容,做别的操作
code = '';
lastCode = '';
lastTime = '';
return;
}
nextTime = new Date().getTime();
if (!lastTime && !lastCode) {
code += e.key;
}
if (lastCode && lastTime && nextTime - lastTime > 30) { // 当扫码前有keypress事件时,防止首字缺失
code = e.key;
} else if (lastCode && lastTime) {
code += e.key;
}
lastCode = nextCode;
lastTime = nextTime;
}
下面看下js获取USB扫码枪数据的代码:
原理:
扫码枪扫描到的条形码每一位会触发一次onkeydown事件
比如扫描条码位‘1234567890'的条形码,会连续执行10次onkeydown事件
条码扫描到最后一位,会直接触发Enter
需要引入jQuery,我这里用的是vuewindow.onload = (e)=> {
document.onkeydown = (e)=> {
let nextCode,nextTime = '';
let lastTime = this.lastTime;
let code = this.code;
if (window.event) {// IE
nextCode = e.keyCode
} else if (e.which) {// Netscape/Firefox/Opera
nextCode = e.which
}
nextTime = new Date().getTime();
//字母上方 数字键0-9 对应键码值 48-57; 数字键盘 数字键0-9 对应键码值 96-105
if((nextCode>=48&&nextCode<=57) || (nextCode>=96&&nextCode<=105)){
let codes = {'48':48,'49':49,'50':50,'51':51,'52':52,'53':53,'54':54,'55':55,'56':56,'57':57,
'96':48,'97':49,'98':50,'99':51,'100':52,'101':53,'102':54,'103':55,'104':56,'105':57
};
nextCode = codes[nextCode];
nextTime = new Date().getTime();
}
// 第二次输入延迟两秒,删除之前的数据重新计算
if(nextTime && lastTime && nextTime-lastTime>2000){
code = String.fromCharCode(nextCode);
}else{
code += String.fromCharCode(nextCode)
}
// 保存数据
this.nextCode = nextCode;
this.lastTime = nextTime;
this.code = code;
// 键入Enter
if(e.which == 13) {
// 判断 code 长度(这里就获取到条码值了,以下业务自由发挥)
code = $.trim(code)
if (code.length == 13) {
this.$message('A类条码:' + code);
} else if (code.length == 23) {
this.$message('B类条码:' + code);
} else if (code.length == 0) {
this.$message('请输入条码');
} else{
this.$message('条码不合法:' + code);
}
//键入回车务必清空code值
this.code = ''
return false;
}
}
}
转载来源:AMS源码分析(一)Activity生命周期管理AMS源码分析(二)onActivityResult执行过程AMS源码分析(三)AMS中Activity栈管理详解(一)Activity生命周期管理1. 前言AMS(ActivityManagerService)是Activity管理的核心组件,提供了Activity的启动、生命周期管理、栈管理等功能,熟悉AMS会对我们认识Activity的工作原理有很大的帮助。当前比较成熟的插件化技术,也是通过对Activity启动流程中的重要组件
系统由商家侧 APP 和用户(学生)侧 APP 两大模块组成,商家 APP 面向食堂的各个商户,商户能够使用其进行菜品的上下架,同时远程接受订单与得到用户评价反馈;用户(学生)侧 APP 面向各位在食堂就餐的学生,学生可以使用其进行菜品预览、在线下单,能够看到餐品的全部评价,同时也能在消费后对菜品进行评价。............
《Additive Margin Softmax for Face Verification》2018,Feng Wang et al.引言:本文提出一个概念上简单且几何上可解释的目标函数:additive margin Softmax (AM-Softmax),用于深度人脸验证,使得人脸特征具有更大的类间距和更小的类内距。同时,本文强调和讨论了特征归一化的重要性。实验表明AM-Soft...
用这两个控件分别实现这两个:package com.example.autocomplete;import android.app.Activity;import android.os.Bundle;import android.util.Log;import andr
原文:https://blog.csdn.net/u013485792/article/details/51355668Makefile.am是一种比Makefile更高层次的编译规则,可以和configure.in文件一起通过调用automake命令,生成Makefile.in文件,再调用./configure的时候,就将Makefile.in文件自动生成Makefile文件了。所以Makefile.am文件是比Makefile文件更高的抽象。下面我根据自己的工作中的一些应用,来讨论Makefil
对于一个商业软件来说,授权码这个功能必不可少。我这里采用CPU序列号加硬盘标识来判断是否授权。完整代码如下:using Microsoft.Win32;using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;us...
一、直接将web项目文件件拷贝到webapps目录中 这是最常用的方式,Tomcat的Webapps目录是Tomcat默认的应用目录,当服务器启动时,会加载所有这个目录下的应用。如果你想要修改这个默认目录,可以在conf下的server.xml文件里修改Host标签里的appBase值。 这个方法实际上和在IDE开发环境里部署项目是一样的。 用此方法的访问路径为http://lo...
快速开始ab参数很多,一般我们用 -c 和 -n 参数就可以了. 例如: ./ab -c 100 -n 10000 http://127.0.0.1/index.php 介绍ab(apache benchmark) —— apache自带的一个测试工具,一般把apache压力测试称为AB测试. ab工具的位置在apache的bin目录里,参数说明:Usage: ./ab
1、Redis介绍Redis服务器程序采用单进程模型(同一时刻只能处理一个请求)处理客户端请求 Redis基于内存并且支持多达六种数据类型 Redis是一款非常优秀的NoSQL数据库 Redis可以与Lua脚本结合爆发出强大的功能点2、Redis安装详见:https://www.runoob.com/redis/redis-install.html3、Redis之Java客户端...
上月,相信三星S8系列的用户已经先后收到Android 8.0的更新推送。那么,三星Note8的Android 8.0什么时候能跟上呢?其实,三星Note8的Android 8.0已经在计划中了。据外媒消息显示,三星土耳其方面已经在其官网公布了三星计划更新Android 8.0正式版的机型的具体推送时间,其中就包括三星Note8、S7、S7+等机型可获得升级。从三星土耳其官方网站上可以看到,最先吃...
USB硬件接口1、Type —— Type A(普通PC端)、Type B(USB设备的接口)、Type C(属于USB3.0)2、Mini —— Mini A、Mini B(数码相机、移动硬盘等移动设备)3、 Micro —— Micro A、MicroB(手机等移动设备),属于USB2.0USB模式1、USB HOST模式2、USB OTG U...
数字麦克风、模拟麦克风(DMIC/AMIC)