Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery中统一透明的指针事件_Javascript_Jquery_Twitter Bootstrap_Multi Touch - Fatal编程技术网

Javascript jQuery中统一透明的指针事件

Javascript jQuery中统一透明的指针事件,javascript,jquery,twitter-bootstrap,multi-touch,Javascript,Jquery,Twitter Bootstrap,Multi Touch,我有一个引导.btn,我想用鼠标点击来切换。问题在于,平板电脑的响应速度太慢,因为在移动浏览器中,点击在触摸启动后300毫秒到达 我尝试在touchstart事件中绑定逻辑,有效地破坏了没有touchstart的桌面浏览器的应用程序。然后,我想将相同的逻辑也绑定到单击,但随后我在移动浏览器中得到了一个重复事件。我一直在玩杂耍,第一次收到touchstart,我就试图从点击中解脱出来,诸如此类,我设法想出了一个如此复杂的设计,以至于总有一些怪癖我无法解决 例如,我无法获取文本输入以在平板电脑中接收

我有一个引导
.btn
,我想用鼠标点击来切换。问题在于,平板电脑的响应速度太慢,因为在移动浏览器中,
点击
触摸启动
后300毫秒到达

我尝试在
touchstart
事件中绑定逻辑,有效地破坏了没有
touchstart
的桌面浏览器的应用程序。然后,我想将相同的逻辑也绑定到
单击
,但随后我在移动浏览器中得到了一个重复事件。我一直在玩杂耍,第一次收到
touchstart
,我就试图从
点击中解脱出来,诸如此类,我设法想出了一个如此复杂的设计,以至于总有一些怪癖我无法解决

例如,我无法获取文本输入以在平板电脑中接收焦点:如果我确实关注
touchstart
,则
单击事件将焦点返回到按钮。我尝试了jquerymobile的
vmousedown
,但我无法实现多点触摸(同时点击多个按钮只能更改其中一个)。我不想重新发明很多轮子,而且我确信我一定错过了一些显而易见的东西,无论是在jquerymobile上,还是在普通JavaScript上

具体来说,我想要一个类似于
vmousedown
的事件,它可以在台式机和手机上工作,每次只触发一次,并且允许多点触摸

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

您只需将modernizer函数与jQuery的
$(document).ready(function()})一起使用即可

此代码直接取自


用于延迟执行触摸测试,但请注意jQueryMobile也具有类似的触摸检测: 如果($.mobile.support.touch){。。。
不,恕我直言,你没有遗漏任何明显的东西:),跨平台/跨设备/触摸友好的功能仍然比它们应该的更难。例如,今天我要看的是win8 surface平板电脑:触摸屏和鼠标。有些情况下,我想知道使用了哪种设备。event.originalEvent.type应该区分ap并单击,对吗?错:(.

使用Modernizer库。
if(modernizer.touch){//logic here}else{//no touch event}
它与jQuery兼容吗?是的,Modernizer与jQuery兼容。@OhGod为什么要写一个更详细的答案,这样我就可以接受了?我想知道如何处理手机和台式机的情况。谢谢你的帮助!!!太好了!!,我将把它包装成一个
$.fn.pointerDown
函数,让我可以以透明方式指向
mousedown
touchstart
$(function(){
    if (Modernizr.touch){
       // bind to touchstart, touchmove, etc and watch `event.streamId`
    } else {
       // bind to normal click, mousemove, etc
    }
});