Determine whether or not a drag event contains file(s) before drop
For security reasons, events other than drop will show dataTransfer.files to be empty even if they do contain files.
JavaScript
function printEventDetails(event){
event.preventDefault();
document.body.innerHTML = ('type: ' + event.type + '<br/>contains files: ' + containsFiles(event));
}
function containsFiles(event){
if (event.dataTransfer.types) {
for (var i=0; i<event.dataTransfer.types.length; i++) {
if (event.dataTransfer.types[i] == "Files") {
return true;
}
}
}
return false;
}
document.addEventListener('dragenter', printEventDetails, false);
document.addEventListener('drop', printEventDetails, false);
// Necessary to allow drop reception
document.addEventListener('dragover', function(dragover){
dragover.preventDefault();
}, false);