以下方式区分键盘长短按可行吗


        var flag=false
        var set=null;
        document.onkeydown=function(){
            if(flag===false){
                flag=true;
                set=setTimeout(()=>{
                        document.onkeyup=function(){
                            console.log("长按");
                            flag=false;
                            document.onkeyup=()=>false;
                        }
                },300);
            }
            document.onkeyup=function(){
                clearTimeout(set);
                set=null;
                console.log("短按");
                document.onkeyup=()=>false;
            }
        }

这段代码是一个 JavaScript 的事件监听函数,主要实现了对键盘按键的长按和短按的判断。
首先,定义了一个变量 flag 用于标记是否长按。接着,设置了一个定时器 set,在按下键盘的时候开始计时,300 毫秒后触发定时器的回调函数。
如果在 300 毫秒内松开了键盘,则会清除定时器并输出 "短按";如果在 300 毫秒内仍然按住键盘,则会将 flag 置为 true,并在松开键盘时输出 "长按"。
整个代码主要是为了实现对键盘按键的长按和短按判断,可以用于一些需要长按触发的功能,比如游戏中的连续跳跃或者长按技能释放