这主要是'这是可能的'这类问题,因为经过一天的测试选择后,我不确定是不是 .

我们在可滚动的DIV中有一个项目列表,每个项目都需要触摸可拖动 . 只是每次打开拖放都会破坏滚动列表的能力,因为滑动滚动也会被解释为拖动事件 . 如果要为每个项目添加拖动手柄,最简单的选择,但我们在这些项目上的可用UI空间非常少,并且希望不会为了为所述句柄添加触摸区域而更加紧缩的东西 .

我正在研究的选择是“触摸并保持释放” . 用户触摸并保持触摸一秒钟,并且项目“解锁”可拖动 . 当我出发时,使用HammerJS作为Press事件,然后为拖放事件过程调用一个开始,这听起来最简单 . 但是,这没有用,因为没有一个浏览器拖动事件可以手动启动 . 我可以使用触发器或dispatchEvent调用'touchstart',它将执行我们需要的设置,但不会发生任何拖动事件 . 一旦触摸开始发生,'dragstart'通常会被触发,因为我需要等待,所以永远不会开始拖动这个过程 .

我假设浏览器的拖放事件仅在特定情况下有效 . 手动触发dragstart不会是一个真正的拖动事件(它缺少所有dataTransfer的东西),最重要的是,尽管元素是一个有效的,可拖动的元素,但实际上没有任何东西被拖动 . 使用像'dragover'这样的替代事件有效,但由于它从来没有真正的拖拽,所以没有发生实际的拖拽 .

这只是浏览器不支持删除HTML拖放的JavaScript吗?还是有什么我想念的?