当按下按键时,Javascript按键仅向下触发一次

时间:2015-06-13 20:45:37

标签: javascript

每当按下w,s,a,d键时,我都会使用以下代码加载某个页面。

Int32.MaxValue + 10

php变量只包含url地址。

我的问题是,是否可以让按键每次点击仅注册一次? 如果按住钥匙,它会迅速发射。

感谢您的任何提示。

2 个答案:

答案 0 :(得分:0)

您可以存储所按键的列表,如果该键不在列表中,则keydown只运行您的代码。在keyup删除列表中的条目。

var keysDown = {};
document.addEventListener('keydown', function(e){
  e = e || window.event;
  varkey = e.keyCode || e.charCode;
  if(keysDown[key]) return;
  keysDown[key] = true;
  // Do something
});
document.addEventListener('keyup', function(e){
  e = e || window.event;
  var key = e.keyCode || e.charCode;
  delete keysDown[key];
});

var keysDown = {};
document.addEventListener('keydown', function(e){
  e = e || window.event;
  var key = e.keyCode || e.charCode;
  if(keysDown[key]) return;
  keysDown[key] = true;
  var keys = { 
    87: '{$up}', 
    68: '{$right}', 
    83: '{$down}', 
    65: '{$left}'
  };
  console.log(keys[key]);
});
document.addEventListener('keyup', function(e){
  e = e || window.event;
  var key = e.keyCode || e.charCode;
  delete keysDown[key];
});

答案 1 :(得分:0)

尝试使用' keyup'事件:

<script>
document.addEventListener('keyup', function(e){
e = e || window.event;
key = e.keyCode || e.charCode;
var keys = { 
  87: '{$up}', 
  68: '{$right}', 
  83: '{$down}', 
  65: '{$left}'
};
if (keys[key]) window.location.href = keys[key];
});
</script>