javascript得到键盘keydown和keyup输入

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript得到键盘keydown和keyup输入相关的知识,希望对你有一定的参考价值。

我想在客户端进行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事件没有很好地提供?

答案

To answer your question:

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

Let's get couple thing out of the way:

  • 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)存储在局部变量中

以上是关于javascript得到键盘keydown和keyup输入的主要内容,如果未能解决你的问题,请参考以下文章

KeyDown,KeyPress和KeyUp详解(转)

javascript之键盘事件的方法

Vue2键盘事件:keydown/keyup...

JavaScript中事件

键盘事件

关于键盘事件