Estoy haciendo un uso extensivo del arrastre nativo de HTML5 &, y se comporta casi por completo, con una pequeña excepción.Comportamiento de arrastrar y soltar HTML5
Estoy tratando de resaltar mis zonas de gota cuando algo se arrastra sobre la página. Originalmente trató de lograr esto poniendo oyentes jQuery en el cuerpo del documento, así:
$("body").live('dragover',function(event){lightdz(event)});
$("body").live('dragexit dragleave drop',function(event){dimdz(event)});
con lightdz() y dimdz() cambiando la propiedad de estilo background-color de todas las zonas de saltos en la página para hacer que se fuera. Esto no funcionó. Cada vez que un objeto arrastrado ingresaba un elemento secundario en la página (como un contenedor div), el oyente lo marcaba como un evento dragleave y atenuaba las zonas de lanzamiento.
Lo solucioné aplicando el oyente a todos los elementos visibles de la página, en lugar de solo al cuerpo. Hubo ocasionalmente un leve parpadeo visible en las zonas de caída cuando cruzó el límite entre un elemento y otro, pero se veía bien.
De todos modos, ahora he cambiado lightdz() y dimdz() para que apliquen una animación jQuery fadeTo() rápida a todas las zonas que no sean dropzones. Esto se ve impresionante cuando funciona, y hace que sea muy evidente para el usuario lo que pueden y no pueden soltar cosas. El problema es que cuando pasa entre los límites del elemento, aplica la animación de desvanecimiento. Esto es mucho más aparente que el parpadeo ocasional del color de fondo, especialmente dado que si el objeto se arrastra sobre múltiples límites muy rápidamente, pondrá en cola las animaciones y hará que la página se desvanezca y entre en repetidas ocasiones.
Incluso si no me molesto con la animación fadeTo(), y simplemente cambio la opacidad, es mucho más visible que el parpadeo de color de fondo, porque toda la página cambia en lugar de solo los elementos de la zona de caída.
¿Hay alguna manera de hacer referencia a toda la página como un elemento único a los efectos de los eventos dragover y dragleave? En su defecto, ¿hay alguna manera de detectar una caída que tiene lugar fuera de la ventana del navegador? Si omito el evento dragleave, se ve bien, pero si se arrastra cualquier objeto sobre la ventana del navegador y luego se cae fuera de él, toda la página permanece desteñida.
parece al menos en algunos navegadores, es event.originalEvent.pageX y no event.pageX ... –
no funciona en opera y firefox para mí –
'.live' está privado .. use' .on' en su lugar http : //api.jquery.com/live/ – Lipis