вызвать события JavaScript или получить объект из координат XY - PullRequest
2 голосов
/ 09 апреля 2009

Я могу достать объект, если он наведен. Я могу получить координаты мыши в любой момент времени. Как получить объект, учитывая его координаты - если они отличаются от мыши?

По сути, пользователь бросает div в определенном месте на экране. Поскольку div шире, чем курсор мыши, мне нужно знать, над каким объектом находится угол div (а не над мышью). Есть ли способ вызвать событие перемещения мыши в JS - передать ему координаты?
Спасибо


Просто быстрый скрипт для тех, кто читает этот пост. Хотя я не выбрал JQuery для своего ответа, это может быть ответом для вас. Похоже, это очень гибкое многофункциональное решение для многих клиентских инструментов, которые мы хотим предложить.

Ответы [ 3 ]

1 голос
/ 09 апреля 2009

Нет способа поднять движение мыши и заставить его заполнить результирующие свойства целевого элемента, нет.

Есть способ получить элемент из произвольных координат, но он вам не очень понравится. Он включает в себя обход каждого элемента страницы и вычисление его размеров (из offsetLeft / Top / Parent) и того, какие элементы перекрывают какие другие элементы (из рассчитанных стилей 'position' и 'z-index') ... по существу, повторно реализуя часть собственный механизм верстки браузера в скрипте. А если у вас есть элементы с «переполнением», прокрутка / авто, вам нужно еще больше вычислений.

Если у вас есть ограниченный регистр (например, вы можете только опустить div где-нибудь среди набора других статически расположенных divов), это может быть управляемым, но общий случай довольно сложный и ни в коем случае не забавный. (Возможно, кто-то где-то упаковал такую ​​функцию в плагин библиотеки или фреймворка, но я еще не встречал ее.)

Если вы можете найти другой способ заставить ваш drag'n'drop вести себя хорошо, который не требует от вас этого, то сделайте это!

1 голос
/ 09 апреля 2009

Непосредственно не отвечая на ваш вопрос, но пытались ли вы использовать библиотеку javascript, такую ​​как jQuery UI? Он обеспечивает хорошую поддержку перетаскивания, и вы можете делать то, о чем говорите ... например. Вы можете сделать некоторые элементы вашей страницы перетаскиваемыми, а другие - перетаскиваемыми, а затем обрабатывать события, когда пользователь перетаскивает элемент. Он обеспечивает допуск на перетаскиваемые объекты, который включает «касание» (а также «подгонка», «пересечение», «указатель»), поэтому вы можете обработать событие «over» ваших перетаскиваемых целей и получить событие обработчик, который срабатывает, когда угол вашего div находится над данным элементом. Этот обработчик событий дает вам ссылку на перетаскиваемый элемент, а также на элемент, на который перетаскивается элемент. (немного в обратном направлении к тому, как вы задали вопрос, но он должен использоваться для решения тех же проблем).

Надеюсь, это поможет ...

0 голосов
/ 11 апреля 2012

Чтобы получить объект из его координат, есть document.elementFromPoint(x,y). Таблица совместимости в Quirksmode показывает, что она доступна в самых последних браузерах.

...