JS的新手,我有这样的功能
cvs.addEventListener("mousedown", function (e) {
e.preventDefault();
some_game_state_change_operation();
});
我想将鼠标控制操作更改为键盘控制:
cvs.addEventListener("keydown", function (e) {
e.preventDefault();
some_game_state_change_operation();
});
现在,无论我按什么键,都不会发生任何事情。函数some_game_state_change_operation()
从未执行。为什么?
可能的相关行:
function render(gameState) {
render.cvs = document.getElementById("cvs");
...
}
答案 0 :(得分:3)
我猜cvs是一个画布,您无法用光标聚焦它。将keydown侦听器附加到窗口而不是cvs。
window.addEventListener("keydown", function (e) {
e.preventDefault();
some_game_state_change_operation();
});
答案 1 :(得分:1)
如果cvs
是canvas
,除非您向其添加tabindex
,否则无法将其重点关注,在这种情况下,keydown
事件监听器将在画布专注于。 tabindex
中的-1
可以使您的canvas
集中精力,但不会按Tab键排序。
<canvas id="cvs" tabindex="-1" height="50" width="100" style="border: 1px solid black;"></canvas>
<br/>
<span id="result"></span>
<script>
document.getElementById("cvs").addEventListener("keydown", function (e) {
e.preventDefault();
document.getElementById("result").innerHTML = "KeyCode: "+e.keyCode+" Key: "+e.key;
});
</script>