过去一周我一直在努力工作,今天我终于取得了突破.我不知道您的条形码扫描仪是如何工作的,但我们的行为类似于USB键盘并发送单独的按键.它确实发送了[GS]的按键,但该事件会被浏览器自动取消.因此它永远不会到达输入事件,这是将字符添加到输入的事件.我无法找到一种方法来阻止它取消,但你可以通过在keypress事件中手动添加字符来解决这个问题.
我不知道你正在为你的应用程序使用什么框架,但我能够通过将它构建为自定义指令来使用它来使用AngularJS.下面的示例只是vanilla JavaScript,但您应该能够将它实现到您可能正在使用的任何框架中.
香草JavaScript示例
Control Character Testdocument.getElementById('tacos').addEventListener('keypress', function(e) {
if (e.charCode === 29) {
this.value += String.fromCharCode(e.which);
}
});
您可以将上面的代码保存到HTML文件中,以测试此方法是否适用于条形码扫描程序.如果这不起作用,另一个值得探索的可能性是重新编程条形码扫描器以发送每个按键,然后这种方法应该工作.
另一个相关行为
在我的研究中,我还发现,如果输入同时与其他字符一起发送,则输入会接受这些字符.例如,我们有另一个条形码扫描器,它将条形码数据作为一个事件发送.浏览器使用[GS]字符接受此输入.您也可以使用复制/粘贴执行此操作.您可能会利用此行为来获得您想要的内容.
浏览器问题
值得记住的是,由于您使用的浏览器,您可能还会遇到这些方法中的任何一种问题.我们一次性发送数据的条形码扫描仪是一个Android设备.它有2个浏览器,chrome和专有浏览器. [GS]字符显示为铬,但不是专有浏览器.
希望这可以帮助!