Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Drag & Drop в полном объеме (https://javascript.ru/forum/events/44-drag-drop-v-polnom-obeme.html)

dizews 25.07.2007 17:05

Drag & Drop в полном объеме
 
Как реализовать drag & drop в полном его объеме. тоесть, как сам объект перемешать, я научился, а вот немогу найти примера как принимать какой либо областью перемещаемый объект.
чтобы перемещаемый объект не выходил за границы заданной области.

Илья Кантор 25.07.2007 19:51

Вариантов несколько.

Один - это добавить области, которая принимает (dropTarget) - события onmousemove/over/out и отслеживать мышу. При этом указатель мыши может быть НАД перемещаемым объектом.

Другой - отслеживать события эти глобально для документа или для большого объекта, и выбирать область по event.target. При этом указатель мыши должен быть РЯДОМ с перемещаемым объектом, чтобы объект его не закрывал. Если такое возможно, то этот способ лучший.

Вообще, я много работал над Drag'n'drop в dojo, но уже забыл что там и как... Помню - координаты кешируются dropTarget и по ним определяется над какой именно dropTarget мы сейчас..

В dojo там dojo.dnd.DragManager..

P.S Вот еще что тебе нашел http://snook.ca/archives/javascript/...the_droppable/

dizews 26.07.2007 10:54

применять event.target не получится потому как объект перетаскиваемый постоянно под курсором. также неполучится применять события объекта приемника.
(или я пока невижу как)
(на счет ссыкли спасибо.. но ангельский мой очень плох :( )

Илья Кантор 26.07.2007 12:43

event.target работает, если мышь рядом. Специально делаешь так, чтобы мышь была рядом, но не под объектом. Это не всегда применимо, но зато это самый быстрый способ, ваще без проблемный.

В dojo было вроде так - при начале drag'n'drop делается кеш из координат всех дроп-зон, и при событиях проверяем над каким элементом мы находимся и вызываем метод нужной дроп-зоны типа onDragOver, onDragMove и тп.


Часовой пояс GMT +3, время: 10:05.