关于 javascript 中 ...

物理
关于 javascript 中 keyup 事件没有 e.repeat 怎么处理的求助

用户头像
香软猫梁 ZnTellurium 更新于2026-4-10 05:34:08
如题,我需要封装一个 ifisdown(key),但是长按会有该死的虚拟 keyup 和 keydown,keydown 有 e.repeat 可以解决但是 keyup 没有,怎么解决这个问题?
收起
2
0
共1条回复
时间正序
用户头像
一只苹果(水木球)
8小时前
可以把文本转成txt,用记事本加上后再转回去(能解决快捷键)
1条评论
用户头像
香软猫梁 ZnTellurium
8小时前

嗯?我的意思是长按 3s 会这样喵

00:00:00.000 keydown

00:00:00.500 keyup

00:00:00.572 keydown

00:00:00.579 keyup

00:00:00.632 keydown

00:00:00.638 keyup

差不多这个意思,你长按某个键 0.5 秒以上,比如 a,你会发现打出了 aaaaaaaaaaaaaaaaaaaaaa,为了打出这个 aaa 键盘会反馈假的 keyup 和 keydown,但是假 keyup 没有 e.repeat 标记导致它和真 keyup 无法辨别,我们不得不接受在长按 0.5 秒后调用 keyState['a'] 判断是否按着 a 时只有 5% 的时间能检测到 1,那么不做防御处理的话玩家会在长按 a 0.5s 后开始抽风地速度 -95%

不过我已经在学校想到了解决办法但是我懒得说了这里地方太小写不下