Я пытаюсь обнаружить, если папка или файл притянуты dragover
или dragenter
события.
В ondrop
событие, существует названный аргумент MouseEvent
, которому назвали поле dataTransfer
, где перечисленные файлы (.files
) или объекты (.items
), в зависимости от браузера, и я могу считать это и в Chrome и в Firefox. Однако для dragover
и dragenter
события те поля (.files
и .items
) пусты. Проблема состоит в том, что мне нужна та информация при перетаскивании, не отбрасывая.
Примечание: И для файлов и для папок event.dataTransfer.types[i] === "Files"
true
.
Я нашел следующий ответ на частично подходящий для моего вопроса:
WebKit и следовательно Chrome, довольно строги на том, когда можно звонить
getData
. Нельзя сделать это внутриdragstart
илиdragover
. Я думаю, что это - каноническая ошибка.
Но тот ответ с 2012, и я не могу найти фактическую обновленную информацию о теме, таким образом, я ищу обновленную информацию об этом.
Я смог добраться, весь Mimetype вещи, являющейся , перетащил по моей странице. Mimetype, кажется, пробел для папок, поэтому возможно, можно отличить его тот путь.
Частичный код (извлеченный из Реагируют):
function handleDragOver(ev: DragEvent) {
ev.preventDefault();
ev.dataTransfer!.dropEffect = 'copy';
console.log(Array.from(ev.dataTransfer.items).map(i => [i.kind,i.type].join('|')).join(', '));
}
document.addEventListener('dragover',handleDragOver);
Вывод похож:
file|image/x-icon, file|image/jpeg, file|application/vnd.ms-excel
, Когда я перетаскиваю 3 файла по своей странице.
Не уверенный, если это только работает над localhost, я еще не загрузил это нигде, но это является полностью рабочим.