Событие Dragleave на самом деле не делает то, что подразумевает. Это не так, пока вы не переместите перетаскиваемый объект над зоной падения, а затем переместите его, не сбрасывая огонь драконьей волны. Он не был реализован для обнаружения ранее удаленного элемента, перетаскиваемого из рабочей зоны. Это просто часть цепочки событий, попадающая где-то между драгстартом и драгендом. Из спецификации это происходит, если «операция перетаскивания не удалась». (Очевидно, у Firefox есть известная проблема в том, что событие dragleave вызывается, даже если удаление прошло успешно).
http://www.w3.org/html/wg/drafts/html/master/editing.html#drag-and-drop-processing-model
Так что вы оба частично правы. «Это показатель того, что перетаскиваемый объект был вытянут из другого объекта». верно, пока этот перетаскиваемый объект ранее не был отброшен. Кроме того, для определения отсутствия сброса допустимо использование события dragleave.
Если вы пытаетесь достичь, зная, что после перетаскивания перетаскиваемого объекта он был впоследствии удален из зоны сброса (то есть пользователь положил что-то в мусорное ведро, а затем решил, что он хочет вытащить его позже), в основном вы будете полностью изменять предыдущие события перетаскивания ... т.е. ваш контейнер перетаскиваемых элементов теперь станет зоной перетаскивания, а ваша первоначальная зона перетаскивания будет содержать перетаскиваемые элементы или как вы сами определитесь на основе своих настроек.
РЕДАКТИРОВАТЬ: философские рассуждения ... Если вы можете предположить, что не все Zinks являются Zorks, то вы можете предположить, что не все приложения, которые реализуют функцию перетаскивания, захотят позволить пользователю, который что-то уронил, удалить этот удаленный элемент. потом. Следовательно, использование перетаскивания в определенных сценариях может привести к перегрузке памяти браузером для поддержания состояния, элементы которого ранее были отброшены в любое время. (Изобразите мозаику, в которой нет понятия «состояние»).