我正在尝试在我的Web应用程序中开发一个简单的拖放UI.可以通过鼠标或手指拖动项目,然后将其放入多个放置区域中的一个.当项目拖放到放置区域(但尚未释放)时,该区域将突出显示,标记安全着陆位置.这对鼠标事件完全没问题,但我在iPhone/iPad上遇到了touchstart/touchmove/touchend系列.
问题是当调用项目的ontouchmove事件处理程序时,它event.touches[0].target始终指向原始HTML元素(项目)而不是当前在手指下的元素.此外,当用手指在某个放置区域上拖动某个项目时,touchmove根本不会调用该放置区域自己的处理程序.这实际上意味着我无法确定手指何时位于任何放置区域之上,因此无法根据需要突出显示它们.同时,在使用鼠标时,mousedown会正确触发光标下的所有HTML元素.
有些人确认它应该像那样工作,例如http://www.sitepen.com/blog/2008/07/10/touching-and-gesturing-on-the-iphone/: 对于那些你来自的人在正常的web设计世界中,在正常的mousemove事件中,目标属性中传递的节点通常是鼠标当前所在的节点.但在所有iPhone touch事件中,目标是对原始节点的引用.
问题:有没有办法确定手指下的实际元素(不是最初触及的元素,在许多情况下可能会有所不同)?