【问题标题】:Capturing first click event on a canvas without focus在没有焦点的画布上捕获第一次单击事件
【发布时间】:2012-08-29 03:22:53
【问题描述】:

我有一个 Canvas 可以响应上面的 mousedown 事件。然后我向 DOM 添加一个输入元素,并将其绝对定位,使其位于画布上。

然后用户点击输入元素,并输入一些文本,然后他们点击回到画布。我的问题是第一次单击只是将焦点设置回画布,但没有在画布元素上注册为 mousedown 事件。

我可以做些什么来确保第一次点击被注册?

【问题讨论】:

  • 有什么方法可以显示一些代码,以便我们更好地了解它的结构吗?您可以访问 JQuery 吗?如果是这样,那么我最初的反应是使用trigger (api.jquery.com/trigger) 函数。

标签: javascript html dom canvas dom-events


【解决方案1】:

我正好遇到了这个问题。我需要同时听左键和右键,并且使用的是mousedown

万一有人像我一样发现了这个。我通过将事件附加到 mouseup 而不是 mousedown 来“解决”它。

这样,焦点发生在mousedown 上并且事件在mouseup 上触发,这对我正在做的事情来说很好。

【讨论】:

    【解决方案2】:

    你是如何附加事件的?这应该“正常工作”,除非有情有可原。

    这是一个例子:

    http://jsfiddle.net/bSpe4/

    根据您的代码外观,为您的画布提供一个选项卡索引值也可能会有所帮助。

    theCanvas.tabIndex = 0; // might fix your particular issue

    【讨论】:

    • 谢谢。也许还有更多的事情发生 - tabindex 技巧没有任何影响。在这里发布代码很困难,因为它传播了一点,但我会看看我是否可以把一些东西放在一起。
    猜你喜欢
    • 1970-01-01
    • 2010-11-12
    • 1970-01-01
    • 2017-07-03
    • 2023-03-13
    • 1970-01-01
    • 2018-02-10
    • 2012-12-05
    • 1970-01-01
    相关资源
    最近更新 更多