方向键监听没反应,是我写错了吗?
我在做一个用方向键控制小方块移动的demo,但按上下左右键完全没反应。查了文档说要用keydown事件,也加了tabindex让div能获取焦点,可还是不行。是不是事件绑定哪里出错了?
这是我的代码:
<div id="box" tabindex="0" style="width:50px;height:50px;background:red;"></div>
<script>
const box = document.getElementById('box');
box.addEventListener('keydown', (e) => {
if (e.key === 'ArrowUp') {
console.log('up');
}
});
</script>
这里有个更清晰的做法:把事件绑定到document上,然后通过CSS控制div的焦点状态。这样不管页面上哪个元素有焦点,都能接收到键盘事件。
修改后的代码:
顺便说下,记得给div加个:focus样式,让用户知道它能获取焦点。这种小细节做对了会让用户体验更好。