我目前使用W,A,S,D鍵調用document.onkeydown
函數來觸發移動功能。JS - 如果未選擇輸入,只觸發document.onkeydown函數
它工作正常使用下面的代碼:
document.onkeydown = function(event){
if(event.keyCode === 68){
socket.emit('keyPress', {inputId: 'right', state: true});
}
else if(event.keyCode === 83){
socket.emit('keyPress', {inputId: 'down', state: true});
}
else if(event.keyCode === 65){
socket.emit('keyPress', {inputId: 'left', state: true});
}
else if(event.keyCode === 87){
socket.emit('keyPress', {inputId: 'up', state: true});
}
}
document.onkeyup = function(event){
if(event.keyCode === 68){
socket.emit('keyPress', {inputId: 'right', state: false});
}
else if(event.keyCode === 83){
socket.emit('keyPress', {inputId: 'down', state: false});
}
else if(event.keyCode === 65){
socket.emit('keyPress', {inputId: 'left', state: false});
}
else if(event.keyCode === 87){
socket.emit('keyPress', {inputId: 'up', state: false});
}
}
我這個唯一的問題是,當用戶鍵入一個chatmessage到HTML的輸入,則charackter仍然會移動。
<input type="text" class="form-control" placeholder="Please enter message..." id="chat-input">
應該用哪種方式檢查html是否被選中/激活?
也許你不應該在全球範圍內設置這麼多事件? – Endless
你可以防止聊天消息輸入bubling keydown事件 –
'if(event.target.matches(cssSelector)){...}' – Endless