Javascript HTML5画布按键事件阻止鼠标事件

Javascript HTML5画布按键事件阻止鼠标事件,javascript,html,canvas,mouseevent,keyevent,Javascript,Html,Canvas,Mouseevent,Keyevent,我有这个小代码。这是一款绘图应用程序的开始:(基于www.williammone.com提供的代码) 这是关键侦听器: canvas.onkeypress = function (e) { e.preventDefault(); var letter = String.fromCharCode(e.keyCode); if (keyMap[letter]) { settings[keyMap[letter].param] = keyMap[letter]

我有这个小代码。这是一款绘图应用程序的开始:(基于www.williammone.com提供的代码)

这是关键侦听器:

canvas.onkeypress = function (e) {
    e.preventDefault();
    var letter = String.fromCharCode(e.keyCode); 
    if (keyMap[letter]) {
        settings[keyMap[letter].param] = keyMap[letter].value;
        refreshToolStatusDisplay();
        redraw();
    }
}
这是鼠标侦听器(没什么特别的):

当鼠标事件在一个关键事件后短时间(或立即)发生时,我对鼠标事件不能正确触发感到疯狂

如何复制:

  • 使用“直线”工具绘制直线
  • 按“p”键选择“播放器”工具
  • 现在无需暂停和移动鼠标->单击
  • mousedown事件将不会触发

    但是,如果您在第三步之前等待大约一秒钟,或者移动鼠标或再次单击,则会出现这种情况

    这对我来说是灾难性的

    我尝试过各种方法,但都不奏效:

  • 关键事件->不是问题,画布仍然有焦点
  • 通过MouseEvent在按键事件后触发自定义鼠标事件。initMouseEvent()->不工作
  • 其他不值得一提的疯狂东西
  • 这似乎是画布元素的典型行为。这是一个 类似但不相关的画布元素与鼠标侦听器的拨弄:->相同的行为:按键后不久单击将阻止单击的发生

    有人有主意吗

    canvas.onmousedown = function(e)
        {
            console.log("mousedown");
            clickX = offsetX(e, canvas);
    ...