HTML拖放在移动设备上
当您使用JavaScript(例如jQuery UI可拖放和可拖放)将JavaScript拖放到网页上时,如何通过移动设备上的浏览器查看时如何使其工作 – 拖动的触摸屏操作被截取手机滚动页面等?
所有的解决scheme欢迎…我最初的想法是:
-
为移动设备提供一个button,用于“抬起”要拖动的项目,然后让它们单击要删除项目的区域。
-
写一个应用程序,这样做的移动设备,而不是试图让网页上工作!
-
你的build议和意见请。
更新:赏金
如果有人能够告诉我如何在移动设备的网页上进行拖放工作,而不是诉诸于上面的第一点和第二点,那么我将为您的方式摆出50代表的美妙赏金!
jQuery UI Touch Punch只是解决了这一切。
这是一个触摸事件支持jQuery UI。 基本上,它只是将触摸事件连接到jQuery UI。 在iPad,iPhone,Android和其他支持触摸的移动设备上进行testing。 我用jQuery UIsorting,它像一个魅力。
对于自2017年以来阅读此文的用户,有一个新的用于将触摸事件转换为拖放的polyfill,使得HTML5 Drag And Drop可以在移动设备上使用。
Bernardo Castilho在这篇文章中介绍了polyfill。
这是来自该post的演示 。
这篇文章也提出了几个关于叶面devise的考虑。
Sencha Touch的testing版具有拖放支持。
你可以参考他们的DnD示例 。 顺便说一句,这只适用于webkit浏览器。
把这个逻辑改写成一个网页可能会很困难。 据我了解,他们禁用所有的浏览器平移和完全在JavaScript中实施平移事件,允许正确的解释拖放。
更新:原始示例链接已经死了,但是我发现这个替代方法:
https://github.com/kostysh/Drag-Drop-example-for-Sencha-Touch
我需要创build一个拖放和旋转,适用于桌面,手机,平板电脑,包括Windows手机。 最后一个使它更复杂(mspointer与触摸事件)。
解决scheme来自伟大的Greensock图书馆
它花了一些跳跃,使同一个对象可以拖动和旋转,但它完美的作品
Jquery Touch Punch很棒,但是它也会禁用可拖动div上的所有控件,所以为了防止这种情况发生,你必须改变这些行…(在写作时,第75行)
更改
if (touchHandled || !self._mouseCapture(event.originalEvent.changedTouches[0])){
读书
if (touchHandled || !self._mouseCapture(event.originalEvent.changedTouches[0]) || event.originalEvent.target.localName === 'textarea' || event.originalEvent.target.localName === 'input' || event.originalEvent.target.localName === 'button' || event.originalEvent.target.localName === 'li' || event.originalEvent.target.localName === 'a' || event.originalEvent.target.localName === 'select' || event.originalEvent.target.localName === 'img') {
添加尽可能多的或你想要的每个要“解锁”的元素
希望能帮助别人
这里是我的解决scheme:
$(el).on('touchstart', function(e) { var link = $(e.target.parentNode).closest('a') if(link.length > 0) { window.location.href = link.attr('href'); } });