Tom*_*Tom 5 javascript jquery keystroke
我有一个javascript函数,在按下'down'键时运行.我想,如果按下"向下"键,该功能根本不会运行.
我想到了keydown和keyup之间的时间,如果时间小于1秒,那么函数将在keyup上运行.问题是,如果我按住键,浏览器会将其视为连续多次按下的键.
有一个更好的方法吗?
谢谢
小智 10
有一个称为repeat的键盘事件属性,如果按键被按下,则返回true。
document.addEventListener('keydown', (event) => {
if(event.repeat) {
// key is being held down
} else {
// key is being pressed
}
});
Run Code Online (Sandbox Code Playgroud)
如果我理解你的问题是你的浏览器将一个按键解释为多个按键事件。您希望按住某个键与仅按下该键时会发生不同的情况;并且您希望这种差异基于您认为应该构成“持有”密钥的某个时间。因此,您需要通过跟踪按键事件来区分按住和按下。下面的伪代码将解决这个问题:
按键时:
if !yourBool
start timer
yourBool = true
Run Code Online (Sandbox Code Playgroud)
在键盘上:
if timer < yourTime
do something
yourBool = false
Run Code Online (Sandbox Code Playgroud)
这将起作用,因为除非发生 keyup 事件,否则计时器不会重新启动。
现在...如果您的浏览器将按键解释为:
Keydown、Keyup、Keydown、Keyup...
那么您的这种方法就会出现问题。