我想跟踪在给定时间按下了哪些键,如下所示:
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
事件。
最佳答案
我建议使用回退机制,首先处理 MDN 的建议,然后回退到旧的解决方案。 但如果您使用 jQuery,则应该使用 provided methods获取 key 代码
// 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);
但是,这只适用于可打印字符,并且通常需要对问题进行更深入的调查。
关于javascript - 使用 keyCode 来配对 keydown 和 keyup 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36096011/