javascript得到键盘keydown和keyup输入

时间:2018-01-02 06:31:30

标签: javascript keyboard

我希望在客户端执行keydown或keyup时发送服务器。

然而,有时候效果不好。它错过了一些事件,当我把手放到键盘上时,“键盘阵列”没有[]。

我使用“键盘阵列”找到重复的输入,当窗口没有聚焦时,我初始化它。这是我的代码。

var keyarr = [];
window.onkeyup = function(e){
    if(keyarr.indexOf(e.keyCode) != -1) {
            //delete keyCode
        keyarr.splice(keyarr.indexOf(e.keyCode),1);
            //websocket.send(keycode);
    }
}
window.onkeydown = function(e){
      //check keyCode available
      if(!e.repeat && keyarr.indexOf(e.keyCode) == -1) {
            //add keyCode
            keyarr.push(e.keyCode);
            //websocket.send(keycode);
      }
}
window.onblur = function(){
      keyarr = [];
      //websocket.send(keycode);
}

为什么某些keydown和keyup事件没有很好地传递?

1 个答案:

答案 0 :(得分:0)

回答你的问题:

这可能是由于WI-FI连接或计算机性能造成的。但我会尝试帮助您优化代码以使其更好地工作

让我们完成一些事情:

  • WTH是您的 dict 变量,它代表什么。请更明确
  • 以下各节:

      

    dict [e.keyCode]!= undefined

    可替换为:

      

    字典[e.keyCode]

  • 在本节中:

      

    if(dict [e.keyCode]!= undefined&& keyarr.indexOf(e.keyCode)!= -1){
        //删除keyCode
        keyarr.splice(keyarr.indexOf(e.keyCode),1);
      }

    您正在查找数组TWICE中键码的索引。将 keyarr.indexOf(e.keyCode)存储在本地变量中