2012-02-08 87 views
0

我测试了一个使用jQuery UI拖动,拖放和排序构建的界面,并注意到拖放功能在手机浏览器中不起作用。我认为在移动浏览器中触发事件的方式有所不同。JavaScript Mobile Drag and Drop

是否还有JavaScript框架,支持在移动浏览器中拖放?

如果没有,关于如何将一些基本的拖放功能放在一起的任何想法?

回答

2

一个棘手的问题......我认为你已经突出了这个问题:触摸事件没有与jQuery拖放功能集成,我不确定是否有拖放库在那里瞄准移动设备的范围。

我可以说的是,你可以可以开始亲自进入这些事件,但我不确定你是否愿意自己写所有的。简单来说,检查移动设备,然后连接事件可以这样来实现:

if (navigator.userAgent.match(/iphone/i) || 
    navigator.userAgent.match(/ipad/i) || 
    navigator.userAgent.match(/ipod/i) || 
    navigator.userAgent.match(/android/i)) 
{ 
    var element = $('#your_draggable_element_id'); 
    element.bind('touchstart', touchStartFunctionHere); 
    element.bind('touchmove', touchMoveFunctionHere); 
    element.bind('touchend', touchEndFunctionHere); 
} 

这将修补你进入事件,这将使你控制你做了什么其次。你显然需要拖动移动,触摸等的位置,并且你可以从事件本身获得这些位置。例如,基于上面的代码:

function touchMoveFunctionHere(event) 
{ 
    event.preventDefault(); 
    var x = event.originalEvent.touches[0].pageX; 
    var y = event.originalEvent.touches[0].pageY; 

    ... 

} 

不是完整的解决方案,你在寻找,我希望别人能摆脱对移动设备拖/放框架一些光,但它是一个开始!希望这可以帮助!

+2

您应该使用像modernizr这样的js库来测试这些事件是否可用。测试用户代理是恶魔的根源。 – 2012-02-08 14:30:07

+2

哈哈哈!非常正确,+1为您的评论照亮了我的大脑的一部分我以为我失去了...;) – 2012-02-08 14:34:16

+0

不客气:p – 2012-02-08 14:42:22