Перетаскивание HTML5

Я широко использую встроенную функцию перетаскивания HTML5, и она почти полностью работает сама по себе, за одним небольшим исключением.

Я ' m пытаюсь выделить мои зоны перетаскивания, когда что-то перетаскивается по странице. Первоначально я пытался добиться этого, помещая слушателей jQuery в тело документа, например:

$("body").live('dragover',function(event){lightdz(event)});
$("body").live('dragexit dragleave drop',function(event){dimdz(event)});

с помощью lightdz () и dimdz (), изменяющих свойство стиля background-color для всех dropzones на странице, чтобы выделить их. Это не сработало. Всякий раз, когда перетаскиваемый объект входил в дочерний элемент на странице (например, в контейнер div), слушатель отмечал это как событие перетаскивания и затемнял зоны перетаскивания.

Я обошел это, применив слушателя ко всем видимым элементам на странице страницу, а не только тело. Иногда было небольшое видимое мерцание на dropzones, когда оно пересекало границу между одним элементом и другим, но выглядело нормально.

В любом случае, теперь я изменил lightdz () и dimdz (), чтобы они применяли быстрый jQuery fadeTo () во все зоны без сброса. Это выглядит потрясающе , когда работает, и дает пользователю понять, на что он может и что нельзя бросать. Проблема в том, что когда он проходит между границами элемента, он применяет анимацию затухания. Это намного более очевидно, чем случайное мерцание фонового цвета, особенно потому, что если объект очень быстро перетаскивается через несколько границ, он ставит в очередь анимацию и заставляет страницу постепенно появляться и исчезать.

Даже если я этого не сделаю. Не беспокойтесь об анимации fadeTo (), а просто измените непрозрачность, это намного заметнее, чем мерцание цвета фона, потому что изменяется вся страница, а не только элементы dropzone.

Есть ли способ ссылаться на вся страница как единый элемент для событий перетаскивания и перетаскивания? Если это не удается, есть ли способ обнаружить падение, происходящее за пределами окна браузера? Если я пропущу событие dragleave, все будет хорошо, но если какой-либо объект перетащить в окно браузера, а затем выпадет за его пределы, вся страница останется блеклой.

13
задан R Hill 20 March 2011 в 16:54
поделиться