Насколько я могу судить, Роберт ответит, как браузеры продолжают вести себя, вам нужно установить функцию ondragover
.
Но чтобы немного расширить его, функция должна возвращать false
, а не true
или undefined
- неактивные функции вернут undefined
.Кажется, не имеет значения, предотвращаете ли вы значение по умолчанию, сработает обработчик события ondrop.В функции ondrop вам понадобится protectDefault, иначе файл будет немедленно загружен в папку загрузки по умолчанию вашего браузера:
document.getElementById('drop-zone').ondragover = function(e) {
return false;
}
document.getElementById('drop-zone').ondrop = function(e) {
e.preventDefault();
console.log('ondrop', e);
}
#drop-zone {
border: solid;
height: 3em;
width: 10em;
}
<div id="drop-zone">Drop zone</div>