2012-02-08 62 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