2012-03-03 23 views

cevap

114

Bu biraz dağınık (en az 3 olayın üstesinden gelmeniz gerekiyor) ancak mümkün.

İlk olarak, böyle bu olaylar için varsayılan eylemleri dragover ve dragenter için eventhandlers ekleyip önlemek gerekir:

$('#div').on(
    'dragover', 
    function(e) { 
     e.preventDefault(); 
     e.stopPropagation(); 
    } 
) 
$('#div').on(
    'dragenter', 
    function(e) { 
     e.preventDefault(); 
     e.stopPropagation(); 
    } 
) 

Sonra e.originalEvent.dataTransfer.files ile düştü dosyaları açılan işleyici ekleyin ve erişebilir:

$('#div').on(
    'drop', 
    function(e){ 
     if(e.originalEvent.dataTransfer){ 
      if(e.originalEvent.dataTransfer.files.length) { 
       e.preventDefault(); 
       e.stopPropagation(); 
       /*UPLOAD FILES HERE*/ 
       upload(e.originalEvent.dataTransfer.files); 
      } 
     } 
    } 
); 

Artık dosyaları div içindeki masaüstü/gezgin/bulucudan sürükleyip bunlara erişebilirsiniz.

http://jsfiddle.net/fSA4N/5/

+7

Neden Gereklidir varsayılan dragover ve dragenter davranışını bastırmak için? –

+2

Bazı tarayıcılar, bir dosyayı tarayıcıya sürüklemeye başladığınızda bazı garip şeyler yapar. Bu gerçekten gerekli değil. Bu olaylarla, dosyayı bırakmanız gereken div'u vurgulamak gibi bazı güzel özellikler de ekleyebilirsiniz. – Alex

+0

Bir şekilde e.originalEvent.dataTransfer.files yöntemini kullanmak ve dosya girişine ayarlamak mümkün mü? – loostro

İlgili konular