我有一个HTML5 Web应用程序,可以使用WebSockets作为KVM屏幕。基本上是我的远程计算机的虚拟监视器。我看到的问题是,当我开始快速(或连续)键入一个字符时,会多次打印该字符。
该代码使得按下/释放的键作为USB HID协议传送到远程系统。因此,根据USB-HID Protocol
当操作系统收到“按键”报告时,它将写字母或 使用它作为命令,如上所述。它将继续执行 一次又一次地执行相同的操作,直到收到“释放密钥” 报告。 当您在USB键盘上按字母'a'时,以下报告 将通过USB中断管道发送:
'a'报告:[0,0,4,0,0,0,0,0]这个'4'值是键码 如USB HID使用表(第10节: 键盘/键盘页面)。该文档定义了报告格式 所有标准化的HID。
释放密钥后,将发送以下报告:
空报告:[0,0,0,0,0,0,0,0]'4'替换为'0';一个 零数组表示没有按下任何东西。
因此,HTML5 Web应用程序发送一个用于按键的数据包和一个用于释放按键的单独数据包。它利用onKeyDown()发送按键事件和onKeyUp()发送按键释放事件。
有时,不会接收到onKeyUp()事件,因此不允许应用程序发送键释放事件,因此被按下的字符会继续打印。
因此问题出在缺少onKeyUp()事件。如何确保不会发生这种情况?可能是什么原因呢?我正在Win 7的Chrome上运行此程序。 可以有替代解决方案来完成上述任务吗?