如何知道条形码扫描仪何时完成扫描Javascript



我有一个条形码扫描仪,我使用的代码是:

var str = '';
window.addEventListener('keydown', function(e){
var char = String.fromCharCode(e.keyCode);
str += char;
});

这是有效的,但会触发事件侦听器大约15次。我想知道如何检测最后一个是什么时候发射的,因为它的发射量可能会有所不同。。。

如果您的扫描仪可以配置为发送Enter,则此操作有效:

不赞成使用keyCode的Keydown,而赞成使用keypress事件。

window.addEventListener('keypress', function(e){
if (e.key === 'Enter') {
// enter pressed.
}
else {
str += e.key;
}
});

这里有一把小提琴要测试:https://jsfiddle.net/jmbldwn/nLv9t5k2/6/

如果您无法将扫描仪配置为发送Enter,则可以在超时的情况下执行此操作,假设扫描仪将快速发送密钥。将超时调整为比扫描仪最坏情况下的延迟稍长。

let str = '';
let timer = null;
window.addEventListener('keypress', function(e) {
str += e.key;
if (timer) {
clearTimeout(timer);
}
timer = setTimeout(() => {
console.log('scanned:', str);
str = '';   
}, 500);
});

https://jsfiddle.net/jmbldwn/msy5Lovx/4/

最新更新