当您使用JavaScript将网页拖放到jQuery UI(例如可拖放的jQuery UI)上时,如何通过移动设备上的浏览器查看,使该按钮正常工作-触摸屏上的拖动操作被拦截翻页等手机?
欢迎所有解决方案...我的最初想法是:
有一个用于移动设备的按钮,可“举起”要拖动的项目,然后让他们单击要放置项目的区域。
编写一个针对移动设备执行此操作的应用程序,然后尝试使网页在其上运行!
请提出您的建议和意见。
当您使用JavaScript将网页拖放到jQuery UI(例如可拖放的jQuery UI)上时,如何通过移动设备上的浏览器查看,使该按钮正常工作-触摸屏上的拖动操作被拦截翻页等手机?
欢迎所有解决方案...我的最初想法是:
有一个用于移动设备的按钮,可“举起”要拖动的项目,然后让他们单击要放置项目的区域。
编写一个针对移动设备执行此操作的应用程序,然后尝试使网页在其上运行!
请提出您的建议和意见。
Answers:
jQuery UI Touch Punch可以解决所有问题。
这是对jQuery UI的触摸事件支持。基本上,它只是将触摸事件连接回jQuery UI。在iPad,iPhone,Android和其他支持触摸功能的移动设备上进行了测试。我使用了可排序的jQuery UI,它的工作原理很吸引人。
Beta版本的Sencha Touch具有拖放支持。
您可以参考他们的DnD示例。顺便说一下,这仅适用于webkit浏览器。
将这种逻辑改造成网页可能会很困难。据我了解,它们会禁用所有浏览器平移,并完全使用javascript实现平移事件,从而可以正确解释拖放。
更新:原始示例链接已死,但我找到了这种替代方法:https :
//github.com/kostysh/Drag-Drop-example-for-Sencha-Touch
我需要创建一个可以在台式机,手机,平板电脑(包括Windows Phone)上运行的拖放+旋转。最后一个使它变得更复杂(mspointer与touch事件)。
解决方案来自伟大的Greensock库
花了一些时间从箍上跳下来,使同一对象可拖动和旋转,但效果很好
您不妨尝试一下Tim Ruffle的拖放式polyfill,它肯定类似于Bernardo Castilho的(参见@remdevtec答案)。
只需完成npm install mobile-drag-drop --save
(可用其他安装方法,例如凉亭)
然后,任何依赖触摸检测的元素界面都应可在移动设备上运行(例如,仅拖动一个元素,而不是同时滚动+拖动)。
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') {
为要“解锁”的每个元素添加任意数量的ors
希望可以帮助某人