HTML5 doğal sürükleme & düşüşünü kapsamlı olarak kullanıyorum ve neredeyse tek başına küçük bir istisna olarak davranıyor.HTML5 sürükle ve bırak davranışı
Sayfadaki herhangi bir şey sürüklendiğinde dropzonlarımı vurgulamaya çalışıyorum. lightdz() ve dimdz() sayfasında tüm dropzones arka plan renkli stil özelliğini değişen
$("body").live('dragover',function(event){lightdz(event)});
$("body").live('dragexit dragleave drop',function(event){dimdz(event)});
onları durmasını sağlamak için: Başlangıçta bu gibi belge gövdesi üzerinde jQuery dinleyici koyarak bunu başarmak için çalıştı dışarı. Bu işe yaramadı. Sürüklenen bir nesne sayfada bir alt öğe (div kabı gibi) girdiğinde, dinleyici bunu sürükleyici bir olay olarak işaretler ve dropzonları kararabilir.
Dinleyiciyi, yalnızca gövde yerine, sayfadaki tüm görünür öğelere uygulayarak bunu yaşadım. Bazen bir öğe ile diğeri arasındaki sınırı geçtiğinde, açılan kısımlarda ufak tefek görülebilir bir titreklik vardı, ama iyi görünüyordu.
Her neyse, şimdi lightdz() ve dimdz() işlevlerini değiştirdim, böylece tüm non-dropzonlara hızlı bir jQuery fadeTo() animasyonu uyguladılar. Bu, çalıştığı zaman harika görünüyor ve kullanıcıya ne yapabildiğini ve neler yapamayacağını çok açık hale getiriyor. Sorun, element sınırları arasında geçtiğinde, soluk animasyonu uyguladığıdır. Bu, arka plan renginin ara sıra titremesinden çok daha belirgindir, özellikle de nesne çok sayıda sınır üzerinde çok hızlı bir şekilde sürüklendiyse, animasyonları sıraya koyar ve sayfanın tekrar tekrar girip çıkmasını sağlar.
Ben fadeto() animasyon ile rahatsız ve sadece donukluk değiştirmek bile
, bu background-color titrek çok daha görünür, çünkü tüm sayfa değişiklikleri yerine sadece dropzone elemanları.Tüm sayfayı, dragover ve dragleave olayları için tek bir öğe olarak göndermenin bir yolu var mı? Başarısızlık, tarayıcı penceresinin dışında gerçekleşen bir düşüşü tespit etmenin herhangi bir yolu var mı? Dragleave etkinliğini atlarsam iyi görünüyor, ancak herhangi bir nesne tarayıcı penceresinin üzerine sürüklendiyse ve bunun dışında bırakılırsa, tüm sayfa soluk kalır.
en azından bazı tarayıcılarda görünüyor, event.originalEvent.pageX ve event.pageX değil ... –
çalışmıyor Opera ve firefox benim için –
'.live' depricated .. kullanımı '.on' yerine http : //api.jquery.com/live/ – Lipis