如何知道条形码扫描器何时扫描完Javascript?

如何知道条形码扫描器何时扫描完Javascript?,javascript,Javascript,我有一个条形码扫描仪,我使用的代码是: var str = ''; window.addEventListener('keydown', function(e){ var char = String.fromCharCode(e.keyCode); str += char; }); 它可以工作,但会激发事件侦听器15次。我想知道如何检测最后一次发射的时间,因为发射的数量可能会有所不同…如果您的扫描仪可以配置为发送Enter,则此功能: 不推荐使用keyCode的Keydown

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

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;
    }
});
这里有一把小提琴要测试:

如果无法将扫描仪配置为发送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);
});

那么它是否会发送其他事件?如果没有,可以是一个简单的计时器,等待它停止。条形码扫描仪基本上只是一个键盘吗?或者它是如何工作的?通常您可以将扫描仪配置为在最后发送返回。这将是最有效的方法。最后一种方法何时发生?从我看到的情况来看,您需要找出一种方法来检测条形码扫描仪的最后一个字符。如果你知道这一点,你可以简单地将
If(e.keyCode===THE_LAST_CHAR_keyCode){return;}
添加到你函数的顶部,你将只捕获最后一个。将这两个答案合并到这个答案中。很抱歉,我忘记了这个问题,因为我正在进行的项目没有启动。不管怎样,根据我的记忆,扫描器迅速地发送了所有的钥匙,所以也许tiemout可以工作。另外,我打算自己生成条形码,所以最好的解决方案可能是在代码的末尾包含一个转义字符并检测它。如果你愿意的话,把它包括在你的答案中。无论如何,我都会把它标记为正确的,谢谢!