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
}
});