Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript android/ipad平板电脑上的jsTree拖放_Javascript_Jquery_Drag And Drop_Jstree - Fatal编程技术网

Javascript android/ipad平板电脑上的jsTree拖放

Javascript android/ipad平板电脑上的jsTree拖放,javascript,jquery,drag-and-drop,jstree,Javascript,Jquery,Drag And Drop,Jstree,我使用jsTree在几个TreeView之间拖放项目。这在个人电脑上很好,但在平板电脑(苹果和安卓)上都不行。我知道JQueryUI没有内置的对平板电脑的DnD支持,我也尝试过一些可用的调整,但都不起作用 是否可以在平板电脑上使用拖放jsTree 谢谢 几天来,我一直在探讨这个问题,重点是获取一个使用jsTree在iPad上工作的现有web应用程序。使用jquery.ui.touch.js,我可以获得大部分的方法。触摸事件可以映射到jstree所期望的鼠标事件,并且该树允许我拖动,但从未识别拖放

我使用jsTree在几个TreeView之间拖放项目。这在个人电脑上很好,但在平板电脑(苹果和安卓)上都不行。我知道JQueryUI没有内置的对平板电脑的DnD支持,我也尝试过一些可用的调整,但都不起作用

是否可以在平板电脑上使用拖放jsTree


谢谢

几天来,我一直在探讨这个问题,重点是获取一个使用jsTree在iPad上工作的现有web应用程序。使用jquery.ui.touch.js,我可以获得大部分的方法。触摸事件可以映射到jstree所期望的鼠标事件,并且该树允许我拖动,但从未识别拖放目标,事实上,从未调用过drop_check函数。所以它不完全在那里

我认为这可能是因为只有一些触摸事件可以映射到像jquery.ui.touch.js这样的鼠标事件:touchstart=mousedown、touchmove=mousemove、touchend=mouseup。然而,jstree还依赖于mouseenter和mouseleave进行删除目标检查,我没有针对这些检查的事件。TouchCenter和touchleave已经讨论过了,但我认为iPad上的Safari浏览器在这一点上不会引发这些问题。我一直在考虑通过查看坐标并检查重叠来从touchmove事件生成mouseenter和mouseleave事件,但我还没有尝试过


更新:2012年5月18日。我想它现在起作用了。有几件事和我想的不一样。最大的突破是当我意识到touch事件的目标元素从touchstart到touchend,在所有的TouchMove过程中都不会改变。然而,mousemove事件期望获取事件的元素就是您正在移动的元素。所以我修改了插件,将mousemove事件发送到touchmove事件中坐标处的元素,它就像champ一样工作。结果还表明,一旦我这样做了,我就不再需要手动触发mouseenter和mouseleave事件,因为jQuery已经处理了这些事件

右键单击上下文菜单(触摸保持)在我的simple tester应用程序中起作用,但在我们的web应用程序中不起作用,直到我在上下文菜单事件后的右按钮上添加了一个模拟的mouseup事件

我修改后的jquery.ui.touch.js版本已上载到此处:

感谢您的发帖,很高兴知道我不是唯一一个关注此事的人。:)我尝试了一些库,包括jquery.ui.touch.js,但到目前为止,它们都不起作用。我还注意到,一般来说,Android的默认浏览器不能很好地处理触摸事件。FireFox做得更好…我在这里取得了一些进展,现在可以拖放了!首先,我使用
document.elementFromPoint
来发现触摸结束时的DOM元素,这样我们就可以在触摸在屏幕上移动时跟踪它。然后,我手动触发mouseleave和mouseenter事件以及mousemove事件,只要该元素发生更改。最大的突破是,当我意识到只要按住鼠标,ChangedTouchs元素就不会改变,因此jquery.ui.touch将模拟鼠标事件发送到原始元素,而不是触摸当时移动的对象。仍在努力右键单击工作,然后我会很高兴与大家分享。你是冠军!:D非常感谢分享代码,它的工作方式很有魅力。这将使我的应用程序更有用。嗨,凯西,你能提供更多关于如何使用你的文件的信息吗?我试着把它写在页面上,但没有成功。它是否需要以任何方式初始化?