= 我正在尝试在我的 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-gesting-on-the-iphone/: 对于那些来自正常的网页设计世界,在正常的 mousemove 事件中,传入 target 属性的节点通常是鼠标当前所在的位置。但在所有 iPhone 触摸事件中,目标是对原始节点的引用。
问题:有没有办法确定手指下的实际元素(不是最初触摸的元素,在许多情况下可能会有所不同)?