我希望在客户端执行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事件没有很好地传递?
答案 0 :(得分:0)
这可能是由于WI-FI连接或计算机性能造成的。但我会尝试帮助您优化代码以使其更好地工作
以下各节:
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)存储在本地变量中