To działa:

var picdrag = document.getElementById('picdrag');
picdrag.addEventListener('drop', picSelect, false);
function picSelect(e) {
    var pics = e.dataTransfer.files;
}

To nie:

$('#picdrag').on('drop', function(e) {picSelect(e);});
function picSelect(e) {
    var pics = e.dataTransfer.files;
}

Ponieważ zgłasza błąd 'e.dataTransfer is undefined'. Nienawidzę tego, kiedy nie wiem, dlaczego coś działa lub nie działa. Jest to specyficzne dla wydarzenia drop, takiego jak jQuery nęka go inaczej.

1
DMIL 1 wrzesień 2012, 13:37

2 odpowiedzi

Najlepsza odpowiedź

Możesz spróbować:

var pics = e.originalEvent.dataTransfer.files;

Z Dokumenty:

Niektóre zdarzenia mogą mieć dla nich właściwości. Dostęp do nich można uzyskać jako właściwości obiektu Event.originalEvent. Aby uzyskać specjalne właściwości dostępne we wszystkich obiektach zdarzeń, można je dodać do tablicy jQuery.Event.props. Nie jest to zalecane, ponieważ dodaje nad głową na każde wydarzenie dostarczane przez jQuery.

Jest też przykład, który powinien być zainteresowany:

// add the dataTransfer property for use with the native `drop` event  
// to capture information about files dropped into the browser window
jQuery.event.props.push("dataTransfer");
4
David Hellsing 1 wrzesień 2012, 09:48
$('#picdrag').on('drop', picSelect);
var picSelect = function(e) {
    var pics = e.dataTransfer.files;
};
2
Purag 1 wrzesień 2012, 09:42