我注意到在JavaScript中处理键盘输入时有些奇怪的行为。也许我错过了一些非常明显的东西,但是是否存在某种规则来确定哪些按键可以同时按下?
我正在使用布尔变量来保存四个键的状态,如下所示,这允许许多并发的按键操作(硬件允许的情况下):
var up = false, left = false, right = false, space = false;
function keydown(e) {
if (e.keyCode == 32)
space = true;
if (e.keyCode == 38)
up = true;
if (e.keyCode == 37)
left = true;
if (e.keyCode == 39)
right = true;
}
function keyup(e) {
if (e.keyCode == 32)
space = false;
if (e.keyCode == 38)
up = false;
if (e.keyCode == 37)
left = false;
if (e.keyCode == 39)
right = false;
}
在两台机器上,我尝试了以下的 jsfiddle。你可以同时按下空格、上箭头和右箭头,但是却不能同时按下空格、上箭头和左箭头。在这两台机器上,在 Chrome、FF 和 IE 中的表现都是一样的。但在第三台机器上能够完美地按住所有4个键。
现在可能这与硬件有关,但我的主要问题是为什么左右键的操作会有差异?这似乎是不一致的,我相信这样做肯定有一个合理的原因。
(您必须在结果窗格内单击才能触发事件) http://jsfiddle.net/SYs5b/