条形码扫描仪仅在用户位于输入框时才会产生 "keypress" 事件。当用户不在输入框上时要听什么事件?

barcode scanner produces a "keypress" event only when the user is on an input box. What event to listen to when user is not on an input box?

上下文:

我正在开发一个使用条形码扫描仪设备的网络应用程序。用户扫描条形码,我将他们重定向到适当的页面。

问题:

我使用的扫描设备仅在用户位于输入框元素时触发 "keypress" 事件

window.addEventListener("keypress", function (event) {
    // do something with the event
}

我希望能够在我的应用程序中的任何位置扫描条形码(即使我不在输入框中)。 (是的,我知道上面的代码会为每个字符触发,我有一个基于计时器的算法来知道它是条形码 reader 还是一个人在打字。)。

到目前为止 :

我查看了 this,所以我尝试用更通用的选择器(window 或文档)替换已接受的解决方案的选择器,但没有成功。是否有其他事件更适合这项任务?我愿意接受关于以其他方式进行的建议。

--编辑-- :

经过更多研究,我发现了 。问题是我的观点可能没有任何输入。纯文本

谢谢

这里是给可能想知道答案的人的:

出于某种原因,以下代码适用于我测试过的所有扫描仪:

document.body.addEventListener("keydown", function(e) {
    // your handler here
}, true)

请注意,布尔值 true 也可以为 false。为什么它对 "window.addEventListener" 和 "document.addEventListener" 都不起作用?我不知道。