【发布时间】:2019-06-12 16:52:19
【问题描述】:
我的问题不是关于“Ctrl”键,而是任何键盘上都不存在的不可打印键,但对于在 HID 模式下由扫描仪读取时为条形码添加前缀很有用。
目前,我可以在 keydown 事件上监听很多字符,但是当我的条码扫描仪配置为在条码前加上 ASCII 字符,如 SOH(ASCII 代码 1)或 STX(2)、ETX(3)、EOT(4 ) …
我没有任何事件的踪迹……
也许,Chrome、Firefox ……不关心这些……
我要测试的代码很简单,我只记录在文档上触发的 keydown 事件……
编辑
我确切地说问题是关于在导航器(Edge、Chrome、Safari、Firefox ...)上运行的 javascript 而不是在节点中运行的。我必须听网页上的条码扫描器。
【问题讨论】:
-
不确定它们是否直接存在于事件对象属性中,但您可以尝试使用
charCodeAt()读取输入字符串的值(使用输入事件进行实时扫描)..? -
您的问题出在其他地方,而不是低级代码。事件不依赖于键码,您可以调度/捕获一个空的键盘事件。如果您没有看到任何事件 - 没有。
-
@Teemu:输入事件仅在输入中......使用条形码扫描仪的目的是在任何输入之外监听读取的条形码。条码扫描器的工作方式类似于物理键盘,但可以将特定键作为前缀或后缀发送。目标是要知道接收到的字符是由条形码扫描仪而不是键盘发送的。专业的条码扫描器可以配置特定的控制键。我希望很清楚,我的英语远非完美^^
-
@SvenLiivak:如果没有事件,你怎么知道事件何时发出?我做了一些测试,并监听了 DOM 文档上的所有 keydown 事件。当我的条码扫描仪配置为所有条码的前缀为 ASCII 码 1 时,我只收到前缀之后的事件。我认为导航器不会使用这些 ASCII 代码发出事件,但我无法在 Google 上找到信息...
-
是的,我意识到之后输入不会在文档上触发。但是那些“专业扫描仪”的程序是用JS写的吗?您可以尝试输入,只需在扫描之前关注输入,并检查是否可以从值中读取不可打印的内容。也许您可以进一步发展这个想法……顺便说一句,我使用过的所有基于网络的扫描仪(不包括移动应用程序等)都已将扫描的代码输入到输入元素中。
标签: javascript events keyboard ascii