Я зарегистрирован в событиях HTML5 DnD, чтобы получать файлы перетаскивания с рабочего стола. Проблема, которую я вижу, заключается в том, что я всегда получаю событие dragleave непосредственно перед событием drop. В спецификации нет упоминания о чем-то подобном, и если вы используете тягу в качестве индикатора того, что падения не произошло, это испортит логику.
var dropbox = document.getElementById("dropzone");
dropbox.addEventListener("dragenter", dragEnter, false);
dropbox.addEventListener("dragleave", dragLeave, false);
dropbox.addEventListener("dragover", dragOver, false);
dropbox.addEventListener("drop", drop, false);
function dragEnter(e){
console.log("dragEnter ",e);
dropbox.style.backgroundColor = "red";
e.stopPropagation();
e.preventDefault();
}
function dragLeave(e){
console.log("dragleave");
dropbox.style.backgroundColor = "white";
e.stopPropagation();
e.preventDefault();
}
function dragOver(e){
console.log("dragOver ",e);
e.stopPropagation();
e.preventDefault();
}
function drop(e){
console.log("drop ",e);
var files = e.dataTransfer.files;
var count = files.length;
e.stopPropagation();
e.preventDefault();
}
это работает как дизайн или я что-то упустил?