DragAndDrop и Mouseleave
Ребята, помогите найти ошибку. Ситуация такая: у меня есть некий список, элементы которого я хочу сделать перетаскиваемыми.
![]() на данной картинке светло серые строки с кабинетами я хочу перетаскивать, но делать я это хочу только "за точки", расположенные слева в каждой строке. Изначально строки имеют атрибут draggable=false. У меня есть такой код, который при нажатии на "точки" делает у строк draggable=true. dots[0].addEventListener("mousedown", function(e){ e.target.parentNode.draggable = true; }, false); dots[0].addEventListener("mouseleave", function(e){ e.target.parentNode.draggable = false; }, false); затем уже срабатывают события перетаскивания, но это не суть. Проблема в том, что когда я начинаю "тащить" за точки, строка становится draggable, но как только курсор выходит за точки, срабатывает mouseleave, и draggable становится равный false (т.е. я начинаю тащить строку, и она сразу же становится не перетаскиваемой)... Такая ситуация происходит только в Firefox, в хроме все это работает как нужно, тоесть mouseleave срабатывает только тогда, когда я отжимаю левую кнопку мышки, и не важно как далеко она находится от объекта с точками. Скажу даже больше, когда я тестировал DragAndDrop в отдельном проекте у меня всё это работало во всех браузерах, а когда я прикручиваю его к рабочему проекту возникает такая ситуация. В рабочем проекте перетаскиваемые строки создаются динамически, на них навешаны другие события (например mouseclick) и т.д. вообщем просто что-то конфликтует с моим DragAndDrop. Поэтому прошу подсказать, где я мог ошибиться. |
ну как всегда - 2 дня мучался, ломал мозг, ничего не мог сделать. Стоило написать на форум - разобрался сам. В общем, если кому-то пригодится, то проблема была в отсутствии
e.dataTransfer.setData(...) в обработчике события "dragstart"... понятия не имею почему, но если не присвоить какие-то данные, то в firefox Drag and Drop нихрена не работает как надо. В тоже время в других браузерах все работает корректно и без этой строки. P.S. С каждым днем firefox разочаровывает меня всё больше и больше, сижу на нем наверное только из за привычки к firebug... браузер стал абсолютно не пригоден для разработки. Да и для повседневного пользования тоже, после 30 версии даже IE кажется менее глючным и тормозным... :( |
Я даже не знаю что такое firebug, а ФФ меня тоже разочаровывает все больше, даже больше чем Хром, не говоря про Ие-ие. :)
У FF отродясь была высокая толерастия к косякам в скриптах. Пока у меня Ишака еще фурычил я в нем все проверял. Теперь проверяю в Хроме. Потому что ФФ кладет на многое. Вспомнил. Как-то нарисовал обхект на пару тыщ строк и внезапно полез проверять в Хроме. И там мне сказали что вот так (как в php например) my_func:function(param=null) { делать нельзя. А в ФФ все прекрасно инициализировалось как изображено. Пришлось все эти фичи искать и переписывать на кошерный лад. |
Часовой пояс GMT +3, время: 12:34. |