Я пытаюсь разработать простой интерфейс перетаскивания/перетаскивания в моем веб-приложении. Элемент можно перетаскивать мышью или пальцем, а затем можно отбрасывать в одну из нескольких зон выпадения. Когда элемент перетаскивается по зоне выпадения (но еще не выпущен), эта зона подсвечивается, маркируя безопасное место посадки. Это прекрасно работает с событиями мыши, но я застрял в семействе touchstart/touchmove/touchhend на iPhone/iPad.
Проблема заключается в том, что когда вызывается обработчик события ontouchmove, его event.touches[0].target
всегда указывает на исходный HTML-элемент (элемент), а не на элемент, который сейчас находится под пальцем. Более того, когда элемент перетаскивается пальцем по какой-либо зоне перетаскивания, этот дескриптор собственных обработчиков touchmove
вообще не вызывается. Это по существу означает, что я не могу определить, когда палец находится выше любой из зон падения, и поэтому не может выделить их по мере необходимости. В то же время при использовании мыши mousedown
корректно запускается для всех элементов HTML под курсором.
Некоторые люди подтверждают, что он должен работать так, например http://www.sitepen.com/blog/2008/07/10/touching-and-gesturing-on-the-iphone/: Для тех из вас, кто пришел из обычного мира веб-дизайна, в обычном событии mousemove, node, переданном в целевом атрибуте, обычно является тем, что мышь в данный момент закончила. Но во всех событиях касания iPhone цель - это ссылка на исходный node.
Вопрос: есть ли способ определить фактический элемент под пальцем (НЕ изначально затронутый элемент, который может быть другим во многих случаях)?