在移动浏览器上处理onTouchDown,在桌面/笔记本电脑上处理onMouseDown?

时间:2012-01-10 07:49:12

标签: javascript ontouchevent onmousedown

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

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

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

处理这个问题的最佳方法是什么?

目前,在我收到的第一个触摸事件时,我关闭了鼠标事件,但如果平台同时支持触摸和放大,那么这可能会有点沉重。鼠标点击(f.i.带有键盘/打击垫/鼠标的Android平板电脑)

测量触摸和触摸之间的延迟触摸不能很好地点击以忽略点击,因为在某些情况下用户可能会以高频率触摸/点击,因此太长的延迟会导致双击/点击次数减少,并且延迟时间过短偶尔双重信号滑落。

我看过用户代理检测,但这看起来非常脆弱(许多用户代理在那里),并没有解决平台同时具有触摸功能的情况。鼠标/垫。

1 个答案:

答案 0 :(得分:1)

也许是你的建议的组合:

  

测量触摸和触摸之间的延迟触摸不能很好地点击以忽略点击,因为在某些情况下用户可能会以高频率触摸/点击,因此太长的延迟会导致双击/点击次数减少,并且延迟时间过短偶尔双重信号滑落

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

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

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