使用下面的代码,当一个键被按下时,它的键码被推送到键映射数组(如果它不存在的话)并且当一个键被松开时,它的键码被从数组中取出。通过不断地将键盘映射数组推到控制台来测试这一点时,我发现了一些奇怪的事情。
var keymap = [];
$(window).keydown(function(e) {
if($.inArray(e.keyCode,keymap) == -1) {keymap.push(e.keyCode);}
});
$(window).keyup(function(e) {
for(i = 0;i < keymap.length;i++) {
if(keymap[i] = e.keyCode) {keymap.splice(i,1);}
}
});
setInterval(function() {console.log(keymap);},100);
如果我同时按住 a 和 d,它们的键码出现在键映射中,那么如果我按住 w,它们的所有三个键码都会出现。现在,当我放开 w 时,它会从数组中删除,但即使我仍然按住 d,d 也是如此。
然后我发现我可以按住a、w和d,它们都会被放入keymap中,但是当我按住它们时,它不会将w、a和s放入keymap中。其中两个的组合将被放入,但第三个不会。
谁能告诉我发生了什么事?