不断执行功能上的KeyDown

Constantly Execute function upon KeyDown

本文关键字:KeyDown 功能上 执行      更新时间:2023-09-26

所以,如果你按住一个键,它会:

  1. 首先输入键
  2. 等待500ms
  3. 重复输入键

或者像这样:

a         a a a a a ....
|         |         |
0         500       1000

我想执行一个代码,每x毫秒执行一个函数

我现在有这个:

var flag = true;
document.body.addEventListener("keydown", function(){
    if(flag){
        flag = false;
        //code
        setTimeOut(function(){flag = true}, 500);
    }
})

但显然这只适用于500ms或更多的区间。如果我想要一个100ms区间,我该怎么做?

这将在按下一个键时每100毫秒运行一次tick函数:

var intervalID;
function tick() {
    // code, for example:
    document.body.innerHTML += ".";
}
document.addEventListener("keydown", function(){
    if (!intervalID) intervalID = setInterval(tick, 100);
});
document.addEventListener("keyup", function(){
    clearInterval(intervalID);
    intervalID = undefined;
});

如果你想一直执行这个函数,你不需要保留interval ID,也不需要keyup处理程序。

https://jsfiddle.net/thsk1dpp/