我想跟踪在给定时间按下哪些键,如下所示:
var keys = {};
$(document.body).on('keydown', function(e) {
keys[e.keyCode] = true;
});
$(document.body).on('keyup', function(e) {
delete keys[e.keyCode];
});
但是,从MDN开始,我们不推荐使用keyCode
,并建议key
。通过在Chrome上进行测试,看起来key
为undefined
。该文档还描述了which
,但我不确定它们之间的区别。
keyCode在这里使用是正确的吗?我不关心哪些键是关闭的,只是我知道有些键是按下的。我也无法使用input
事件。
答案 0 :(得分:1)
我建议使用一个回退机制,首先处理来自MDN的建议,然后再回到旧解决方案。 但是如果你使用jQuery,你应该使用provided methods来获取密钥代码
// jquery
$(document.body).on('keyup', function(e) {
delete keys[e.which];
});
// vanilla
document.body.addEventListener('keyup', function (e) {
delete keys[(e.key && e.keyCode.charCodeAt(0)) || e.which || e.keyCode];
}, true);
然而,这只适用于可打印字符,并且通常需要对问题进行更深入的调查。