Я широко использую встроенную в HTML5 функцию перетаскивания, и она почти полностью ведет себя сама, за одним небольшим исключением.
Я пытаюсь выделить свои дропзоны, когда что-либо перетаскивается по странице,Первоначально я пытался добиться этого, помещая слушатели jQuery в тело документа, например:
$("body").live('dragover',function(event){lightdz(event)});
$("body").live('dragexit dragleave drop',function(event){dimdz(event)});
с помощью lightdz () и dimdz (), изменяя свойство стиля background-color всех dropzones на странице, чтобы сделатьони выделяются.Это не сработало.Всякий раз, когда перетаскиваемый объект входит в дочерний элемент на странице (например, контейнер div), слушатель помечает это как событие dragleave и затемняет dropzones.
Я справился с этим, применив слушателя ко всем видимымэлементы на странице, а не просто тело.Иногда на дропзонах было небольшое видимое мерцание, когда оно пересекало границу между одним элементом и другим, но это выглядело нормально.
В любом случае, теперь я изменил lightdz () и dimdz (), чтобы они применялисьбыстрая анимация jQuery fadeTo () для всех не-дропзонов.Это выглядит потрясающе , когда это работает, и делает для пользователей совершенно очевидным, на что они могут, а что нет.Проблема в том, что когда он проходит между границами элементов, он применяет анимацию затухания.Это гораздо более очевидно, чем случайное мерцание цвета фона, особенно если объект очень быстро перетаскивается через несколько границ, он ставит анимацию в очередь и неоднократно приводит к исчезновению и исчезновению страницы.
Дажеесли я не буду беспокоиться о анимации fadeTo () и просто изменю непрозрачность, она будет гораздо более заметной, чем мерцание фона, потому что меняется вся страница, а не только элементы dropzone.
Есть ли способ ссылаться на всю страницу как на единый элемент в целях событий драго и драглэйва?В противном случае, есть ли способ обнаружить падение, которое происходит за пределами окна браузера?Если я пропущу событие dragleave, оно будет выглядеть нормально, но если какой-либо объект перетаскивают через окно браузера, а затем выбрасывают за его пределы, вся страница остается блеклой.