gpt4 book ai didi

javascript - jsTree拖放android/ipad平板电脑

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:20:42 25 4
gpt4 key购买 nike

我正在使用 jsTree 在多个 TreeView 之间拖放项目。这在 PC 上运行良好,但在平板电脑(Apple 和 Android)上运行不佳。我知道 JQueryUI 没有对平板电脑的内置 DnD 支持,我已经尝试了一些可用的调整,但都没有奏效。

是否可以在平板电脑上的 jsTree 中使用拖放功能?

谢谢!

最佳答案

几天来我一直在探索这个问题,重点是让现有的使用 jsTree 的 Web 应用程序在 iPad 上运行。使用 jquery.ui.touch.js 我可以完成大部分工作。触摸事件可以映射到 jstree 期望的鼠标事件,并且树将允许我拖动,但放置目标永远不会被识别,事实上 drop_check 函数永远不会被调用。所以它还不完全存在。

我想这可能是因为只有一些触摸事件可以像 jquery.ui.touch.js 那样映射到鼠标事件:touchstart=mousedown、touchmove=mousemove、touchend=mouseup。但是,jstree 还依赖于 mouseenter 和 mouseleave 来检查放置目标,我没有这些事件。已经讨论了 touchenter 和 touchleave,但我认为此时 iPad 上的 Safari 浏览器不会触发它们。我一直在考虑尝试通过查看坐标并检查重叠来从 touchmove 事件生成 mouseenter 和 mouseleave 事件,但我还没有尝试过。


更新:2012 年 5 月 18 日。我认为它现在正在运行。有几件事与我想象的不同。最大的突破是当我意识到触摸事件目标元素从触摸开始到触摸结束都不会改变。然而,mousemove 事件期望获取该事件的元素是您要移动的元素。因此,我更改了插件以将 mousemove 事件分派(dispatch)给位于 touchmove 事件坐标处的元素,并且效果非常好。事实证明,一旦我这样做了,我就不再需要手动触发 mouseenter 和 mouseleave 事件,因为 jQuery 会处理这些事件。

右键单击上下文菜单(在触摸保持时)在我的简单测试器应用程序中起作用,但在我们的 Web 应用程序中不起作用,直到我在上下文菜单事件之后在右侧按钮上添加了一个模拟的 mouseup 事件。

我修改后的 jquery.ui.touch.js 已经上传到这里: http://code.google.com/p/jquery-ui-for-ipad-and-iphone/issues/detail?id=18

关于javascript - jsTree拖放android/ipad平板电脑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9467568/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com