[JavaScript] 纯文本查看 复制代码
let L = {};
let U = {};
let R = {};
let D = {};
$(window).keydown((e) => {
switch (e.keyCode) {
case 37:
clearInterval(L.timer);
L.timer = setInterval(() => {
console.log("left");
}, 17)
break;
case 38:
clearInterval(U.timer);
U.timer = setInterval(() => {
console.log("up");
}, 17)
break;
case 39:
clearInterval(R.timer);
R.timer = setInterval(() => {
console.log("right");
}, 17)
break;
case 40:
clearInterval(D.timer);
D.timer = setInterval(() => {
console.log("down");
}, 17)
break;
default:
break;
}
})
$(window).keyup((e) => {
switch (e.keyCode) {
case 37:
clearInterval(L.timer);
break;
case 38:
clearInterval(U.timer);
break;
case 39:
clearInterval(R.timer);
break;
case 40:
clearInterval(D.timer);
break;
default:
break;
}
})
其实,keypress事件相当于就是keydown事件到keyup事件之间的过程,即按键按下到弹起之间的过程。明白了这个思路,我们就可以通过使用keydown和keyup事件来模拟keypress事件。如以上代码,我们在按下一个方向键时,设置定时器持续执行代码,当我们弹起该方向键时,再清除定时器,完成了对keypress事件的模拟,解决了我们的需求。