我正在创建一个Web前端来控制一个小型机器人。 Ajax调用将在键盘按下时启动,以启动机器人,并在键盘按下时停止。

我的问题是,按住某个键时,键按下,键按下和键按下事件似乎会不断循环。是否有人知道只有在第一次按下按键时才会触发按键按下,而在释放按键时才触发按键按下的方法?

--edit:我最初忘记提及它,但是我尝试保存按钮的状态。问题在于,当我按住键时,按键,按键和按键事件会一再触发。

最佳答案

我无法重现该问题-
我找不到从keydown引发的任何keyup事件,
不管我按住一个键多长时间。

该方法侦听按键,运行一些代码,
并且在听到另一个keydown之前等待一个keyup。

该警报仅在键入时调用。

var A=[], who=// I used a textarea, substititute your own target
who.onkeydown= who.onkeyup= function(e){
 e=window.event || e;
 var t= e.type, target= e.target || e.srcElement;
 A.push(t);
 if(t== 'keydown'){
  // start robot and stop listening to keydown
  target.onkeydown= '';
 }
 else if(t== 'keyup'){
  // stop robot and listen for keydown
  target.onkeydown= arguments.callee;
  alert(A)
 }
}

10-04 22:31
查看更多