用于在 Canvas 上按下按键的 addEventListener [英] addEventListener for keydown on Canvas

查看:43
本文介绍了用于在 Canvas 上按下按键的 addEventListener的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试制作一个响应键盘和鼠标输入的画布应用程序.我有这个代码:

I am trying to make a canvas app that responds to keyboard and mouse input. I have this code:

canvas = document.getElementById('canvas');
canvas.addEventListener('mousedown', function(event) {
    alert('mousedown');
        }, false);
canvas.addEventListener('keydown', function(event) {
    alert('keydown');
        }, false);

每当我点击鼠标时,'mousedown' 警报就会出现,但 'keydown' 警报永远不会出现.相同的代码在 JS Bin 上运行良好:http://jsbin.com/uteha3/66/

The 'mousedown' alert comes up whenever I click the mouse, but the 'keydown' alert never comes up. The same code works fine on JS Bin: http://jsbin.com/uteha3/66/

为什么它在我的页面上不起作用?画布无法识别键盘输入吗?

Why isn't it working on my page? Does canvas not recognize keyboard input?

推荐答案

Edit - 这个答案一个解决方案,但更简单和正确的方法是设置画布元素上的 tabindex 属性(由 hobberwickey 建议).

Edit - This answer is a solution, but a much simpler and proper approach would be setting the tabindex attribute on the canvas element (as suggested by hobberwickey).

您无法聚焦画布元素.解决此问题的一个简单方法是让您自己"专注.

var lastDownTarget, canvas;
window.onload = function() {
    canvas = document.getElementById('canvas');

    document.addEventListener('mousedown', function(event) {
        lastDownTarget = event.target;
        alert('mousedown');
    }, false);

    document.addEventListener('keydown', function(event) {
        if(lastDownTarget == canvas) {
            alert('keydown');
        }
    }, false);
}

JSFIDDLE

这篇关于用于在 Canvas 上按下按键的 addEventListener的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆