[英]javascript get keyboard keydown and keyup input
I want to send server when client does keydown or keyup. 我想在客户端进行键盘按下或键盘输入时发送服务器。
However, sometimes It doesn't work well. 但是,有时效果不佳。 It misses some event and "keyboard array" doesn't [] when I leave my hands to keyboard. 当我将手放在键盘上时,它会丢失某些事件,并且“ [keyboard array]”不会[]。
I maked "keyboard array" to find duplicate input, and when window is not focused I initialized it. 我制作了“键盘数组”以查找重复的输入,并且当窗口未聚焦时,我对其进行了初始化。 Here's my code. 这是我的代码。
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);
}
Why some keydown and keyup event doesn't delivered well? 为什么某些keydown和keyup事件无法很好地传递?
It can be due to WI-FI connections or computer performance. 这可能是由于WI-FI连接或计算机性能所致。 But I'll try to help you optimize your code a bit to make it work better 但我会尽力帮助您优化代码以使其更好地工作
The sections: 这些部分:
dict[e.keyCode] != undefined dict [e.keyCode]!=未定义
Can be replaced with: 可以替换为:
dict[e.keyCode] dict [e.keyCode]
In this section: 在这个部分:
if(dict[e.keyCode] != undefined && keyarr.indexOf(e.keyCode) != -1) { if(dict [e.keyCode]!=未定义&& keyarr.indexOf(e.keyCode)!= -1){
//delete keyCode //删除keyCode
keyarr.splice(keyarr.indexOf(e.keyCode),1); keyarr.splice(keyarr.indexOf(e.keyCode),1);
} }
You're looking up the index of the keycode in the array TWICE. 您正在数组TWICE中查找键码的索引。 Store keyarr.indexOf(e.keyCode) in a local variable 将keyarr.indexOf(e.keyCode)存储在本地变量中
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.