我注意到 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 个键。
现在推测这与硬件有关,但我的主要问题是为什么左右键的操作存在差异?这似乎不一致,我确信这是有原因的。
(您必须在结果窗格中单击才能触发事件)