是否可以计算同时按下多少个键?我已经走得很远了,但是在离开浏览器窗口时跳出了一些不需要的行为。如果在离开浏览器窗口时按住x键数量,然后在其他窗口中释放键,则当我回到浏览器窗口时numKeys数组保持不变。也许您可以检查返回浏览器窗口时按下了多少键?

到目前为止,我的代码:

var numKeys = [];

$(document).keydown(function(e){
    if(numKeys.indexOf(e.keyCode) == -1){
        numKeys.push(e.keyCode);
    }
    document.getElementById('test').innerHTML = numKeys.length;
});

$(document).keyup(function(e){
    if(numKeys.indexOf(e.keyCode) > -1){
        var index = numKeys.indexOf(e.keyCode);
        if(index > -1){ numKeys.splice(index, 1); }
    }
    document.getElementById('test').innerHTML = numKeys.length;
});

最佳答案

一个简单的解决方案是清除用户离开选项卡时按下的键。您可以像这样使用window.onblur事件:

window.onblur = function () {
    numKeys = [];
};


Demo

请注意,此解决方案将无法识别您在另一个窗口中按的键。 (例如,您在另一个窗口中按“向上”,然后再次选择此窗口)

09-11 19:43