检测javascript中的键盘错误
Posted
技术标签:
【中文标题】检测javascript中的键盘错误【英文标题】:Detecting keyboard errors in javascript 【发布时间】:2015-03-02 23:32:48 【问题描述】:我正在编写一个脚本,要求用户同时按下多个键。我使用 onkeydown 和 onkeyup 事件侦听器跟踪哪些被按下。但是,某些键组合不兼容,通常会导致哔声,并且不会触发事件侦听器。有没有办法检测键盘错误?
这是我的一些代码。例如,如果用户在没有松开的情况下按下以下顺序,计算机将发出错误哔声:T,R,O。不过,“O”不会触发 keyDonwFn。
在 html 代码中,我有 onkeydown="keyDownFn(event);"
function keyDownFn(e)
if ( isCorrectKey( e.keyCode ) )
do A
else if (e.keyCode != currentKey)
do B
else if (e.keyCode == currentKey)
do C
如果出现错误,我想再换一个:
else if (e.keyCode == error)
do D
【问题讨论】:
请编辑您的问题以包含您的代码的相关 sn-p 和导致问题的输入示例。 真的不太可能没有触发事件监听器。你应该假设它是你的代码,除非你能证明不是这样。向我们展示什么不起作用 正如duskwuff 所讨论的,大多数键盘不支持n 键翻转。我只是想检测何时达到键盘限制。我进行了编辑以提供一个不兼容的 3 字母组合示例。 【参考方案1】:不,这可能是不可能的。
您描述的大多数限制可能是键盘硬件本身的限制 - 大多数键盘不支持n-key rollover,因此它们在物理上无法正确检测同时按下的多个键。在硬件级别没有通知发生这种情况,因此无法将其传播到网页。
您正在使用的某些组合键也可能映射到浏览器中的命令,而这些命令无法被网页捕获。同样,如果发生这种情况,则事件不会传播到网页,因此您无法检测到它。
【讨论】:
你的意思是软件层面没有通知吗?当同时按下不兼容的键时,至少在我的计算机上会发出错误哔声。这不是硬件级别的通知吗?以上是关于检测javascript中的键盘错误的主要内容,如果未能解决你的问题,请参考以下文章
Javascript - 带蓝牙键盘的 iPad Tab 键检测