Когда операция перетаскивания HTML5 заканчивается в другом окне, событие " Drop
запускается в целевом окне, и событие DragEnd
запускается на перетаскиваемом элементе в окне источника.
Для копирования и перемещения цель капли выполняет операцию копирования с использованием данных, переносимых e.dataTransfer
, а для операции перемещения элемент должен быть удален в исходном окне.
Когда событие срабатывает в исходном окне, как должен обработчик DragEnd
определить, завершилась ли операция капли или была прервана?
Недостаточно знать, выполняется ли операция копирования или вырезания; операция разреза удаляет элемент из источника только тогда, когда ему удастся в пункте назначения. Это, если хотите, транзакционное.
Я нашел ответ в mdn. Перейдите по ссылке и прокрутите вниз до раздела Завершение перетаскивания. К сожалению, эта информация не DragEnd
ни в документах DragEnd
ни в документах DataTransfer
.
После завершения перетаскивания в источник перетаскивания запускается событие dragend (тот же элемент, который получил событие dragstart). Это событие сработает, если [drag] было успешным [или] отменено. Однако вы можете использовать свойство dropEffect, чтобы определить, что произошло.
Если свойство dropEffect имеет значение none во время перетаскивания, то сопротивление было отменено. В противном случае эффект определяет, какая операция была выполнена. Источник может использовать эту информацию после операции перемещения для удаления перетаскиваемого элемента из старого местоположения.
Акцент и ремонт структуры предложений и грамматики - мои.
Safari 8 полностью сломан. Он всегда сообщает "none" как эффект падения в событии drop.