Как мне заставить clientX и clientY работать внутри моего обработчика событий “перетаскивания” в Firefox?

StackOverflow https://stackoverflow.com/questions/887316

Вопрос

Mozilla firefox 3.x, похоже, имеет ошибку при прослушивании события "ondrag".Объект события не сообщает о положении перетаскиваемого объекта, все смещения clientX, clientY и другие смещения экрана равны нулю.Это довольно проблематично, так как я хотел создать прокси-элемент на основе перетаскиваемого элемента и, конечно, использовать clientX и clientY для настройки его положения.

Я знаю, что есть интересные вещи, такие как setDragImage в HTML5, но я хочу предоставить общую абстракцию для native DD между браузерами.

Неисправный код:

document.addEventListener('drag', function(e) {
    console.log(e.clientX); // always Zero
}, false);

Примечание :Эта проблема не возникает при других событиях (dragstart, dragover), и события mousemove не могут быть захвачены при перетаскивании чего-либо.

Пожалуйста , помогите !

Это было полезно?

Решение

Я нашел решение, я поместил прослушиватель на событие "dragover" на уровне документа, теперь я получаю правильные свойства X и Y, которые я могу предоставить через глобально разделяемый объект.

Другие советы

Событие перетаскивания в HTML 5 не полностью функционально в современных браузерах.Чтобы имитировать ситуацию перетаскивания, вы должны использовать:

  1. Добавьте событие onmousedown, установив значение var true.
  2. Добавьте событие onmouseup, установив для этого параметра значение false.
  3. Добавьте событие onmousemove, проверяя, имеет ли этот параметр значение true, и если это так, переместите ваш div в соответствии с координатами.

У меня это всегда срабатывало.Если вы столкнетесь с какими-либо проблемами, свяжитесь с нами снова, я могу привести несколько примеров.

удачи!

Я знаю, что есть классные вещи вокруг такие как setDragImage в HTML5, но я хочу предоставить общую абстракцию для встроенного DD между браузерами.

Но зачем делать что-то подобное, разве не существует библиотек, подобных jQuery - jQuery - запрос & Прототип доступно для кроссбраузерного перетаскивания?

Или же, если вы хотите реализовать собственную библиотеку DD, вы можете воспользоваться помощью их методов или расширить их, поскольку обе библиотеки следуют объектно-ориентированной парадигме.

Это сэкономит много времени.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top