【问题标题】:Unable to preventDefault inside passive Konva event listener due to target being treated as passive由于目标被视为被动,无法在被动 Konva 事件侦听器中阻止默认值
【发布时间】:2017-02-13 14:37:59
【问题描述】:

我正在使用 Konva.js@1.3.0 库(带有 React@15.4.2 和 react-konva)来构建一个简单的 2D 游戏。

在 Chrome 中测试应用时一切正常。但是,当我打开开发工具并切换到设备工具栏(以在移动设备大小的视口上查看应用程序)时,我收到以下警告:

由于目标被视为被动,因此无法在被动事件侦听器中阻止默认设置。
见 http‍s://www.chromestatus.com/features/5093566007214080

我已阅读链接并研究了AddEventListener{passive: true} 选项。但是,我并没有在我的代码中直接调用AddEventListener,它都是通过 Konva 和 React 抽象出来的。

此外,附加到 Konva 生成的画布元素的点击事件都没有在设备模式下工作。如果我退出设备工具栏,一切正常,点击元素按预期工作。

如何在 Konva/React 中启用被动事件侦听器? (这甚至是解决方案吗?)

【问题讨论】:

  • 我不确定这些错误是从哪里来的。但是要启用触摸事件支持,您需要在代码中添加触摸侦听器。例如。添加“onClick”和“onTap”。
  • 我之前使用的是onClick。我应该替换那些(或添加)onTap 吗?这需要 Tappable 包吗?
  • 您不需要任何其他软件包。您只需要添加更多的侦听器(触摸事件和鼠标事件是 Konva 中的不同事件)。
  • 我天真地用onTap 替换了onClick,一切都开始工作,没有错误。我不需要任何处理 onTap 的包,所以我很困惑它是如何工作的。
  • 您可以在此处konvajs.github.io/docs/events/Desktop_and_Mobile.html 阅读更多关于 Konva 事件的信息(以及其他相关的“事件”教程)。您可以在此处阅读的所有事件列表:konvajs.github.io/api/Konva.Shape.html#on

标签: javascript dom-events konvajs


【解决方案1】:

我得到了同样的错误浏览器控制台,我引用了链接:https://github.com/bevacqua/dragula/issues/468 并更新touch-action CSS 属性,它工作正常!

【讨论】:

    【解决方案2】:

    抱歉,这是 Chrome 56 中对improve scroll performance 的重大更改。您可能需要添加适当的 touch-action CSS rule 来明确禁用触摸滚动。

    【讨论】:

    • 添加到哪里或哪个元素?
    猜你喜欢
    • 2020-01-22
    • 1970-01-01
    • 2019-08-28
    • 2017-06-25
    • 2019-09-08
    • 2017-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多