【问题标题】:Handle onTouchDown on mobile browser and onMouseDown on desktop/laptop?在移动浏览器上处理 onTouchDown 和在台式机/笔记本电脑上处理 onMouseDown?
【发布时间】:2012-01-10 07:49:12
【问题描述】:

我正在开发一个带有 HTML5 画布的网络游戏应用程序,该画布必须对“点击”事件(一般意义上的)做出反应。

在移动平台(或支持触控的平台)上,这意味着对 onTouchDown 做出反应,在台式机/笔记本电脑平台上(使用鼠标或垫),这意味着对 onMouseDown 做出反应。

问题是,如果我同时处理这两个事件,那么有时同一个“点击”会导致两个事件都被触发,所以我会收到双重信号。

最好的处理方法是什么?

目前,在我收到第一个触摸事件时,我会关闭鼠标事件,但如果平台同时支持触摸和鼠标点击(例如带有附加键盘/键盘/鼠标的 Android 平板电脑),这可能有点笨拙

测量触摸和点击之间的延迟以在触摸后忽略点击效果不太好,因为在某些情况下用户可能会高频触摸/点击,因此太长的延迟会导致双击丢失/点击,太短的延迟会让偶尔的双重信号通过。

我查看了用户代理检测,但这似乎很脆弱(那里有许多用户代理),并且不能解决平台同时具有触摸和鼠标/板的情况。

【问题讨论】:

    标签: javascript touch-event onmousedown


    【解决方案1】:

    可能是您的建议的组合:

    测量触摸和点击之间的延迟以在触摸后忽略点击效果不太好,因为在某些情况下用户可能会高频触摸/点击,因此太长的延迟会导致双击丢失/点击,太短的延迟会让偶尔的双重信号通过

    检测水龙头的 x,y 坐标会减少误报。因此,如果按顺序发生的两个事件(点击和单击)获得相同的坐标,则它们的处理方式相同。

    或者如果用户想要使用鼠标或触摸设备,如果两者都支持,则可以让用户切换(通过某种选项屏幕)。显示警告消息,例如说 you're on a touch device so we enabled touch events, if you're using a mouse please see options 或类似的内容。

    大多数用户会对自动选择感到满意,每个不满意的人都可以更改它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-20
      • 2017-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-04
      • 2020-09-10
      • 2017-03-20
      相关资源
      最近更新 更多