0

我有一个引导程序.btn,我想通过鼠标单击来切换。问题是平板电脑的响应太慢了,因为移动浏览器在click300 毫秒后到达。touchstart

我尝试在事件中绑定逻辑touchstart,有效地破坏了没有touchstart. 然后我想将相同的逻辑也绑定到,click但后来我在移动浏览器中得到了一个重复的事件。click我一直在玩杂耍,从我第一次收到. 时就尝试解除绑定touchstart,等等,并设法提出了一个如此复杂的设计,以至于这里或那里总是有一些我无法解决的怪癖。

例如,我无法在平板电脑中获得文本输入来接收焦点:如果我确实关注,touchstart那么click事件会将焦点返回给按钮。我尝试了 jQuery Mobile 的vmousedown,但我无法实现多点触控(同时点击多个按钮只会更改其中一个)。我不想重新发明很多轮子,而且我确信我一定遗漏了一些明显的东西,无论是在 jQuery Mobile 上,还是在纯 JavaScript 上。

具体来说,我希望这样的事件vmousedown既适用于台式机又适用于移动设备,每个事件只触发一次,并允许多点触控。

4

2 回答 2

1

利用Modernizr来处理基于设备等的操作。它提供了出色的跨浏览器/平台支持,而无需嗅探用户代理等。相反,它使用特征检测。

您可以将 Modernizr 函数与 jQuery 一起使用$(document).ready(function()});

$(function(){
    if (Modernizr.touch){
       // bind to touchstart, touchmove, etc and watch `event.streamId`
    } else {
       // bind to normal click, mousemove, etc
    }
});

此代码直接取自Modernizr 文档

此外,这是另一个执行资源touch tests

于 2013-05-21T19:36:03.967 回答
0

迟到了,但请注意 jQueryMobile 也有类似的触摸检测: if ( $.mobile.support.touch ) {... 不,恕​​我直言,你没有错过任何明显的东西 :),跨平台/跨设备/ 触摸友好的功能仍然比应有的更难。例如,今天我在看一个win8 Surface平板电脑:触摸屏和鼠标。在某些情况下,我想知道使用了哪个设备。event.originalEvent.type 应该区分点击和点击,对吧?错误的 :(。

于 2014-11-17T22:07:42.807 回答