Я пытаюсь создать простую функцию перетаскивания на моем веб-сайте, чтобы выбрать файл. Я выполнил this tutorial, чтобы реализовать его. Я скопировал и вставил код, и он не работает.Drag 'n drop not working
Я попробовал его на Chrome и Internet Explorer, и оба они имели одинаковые результаты, то есть они отображали новую страницу с изображением. Я хочу, чтобы он получил путь к файлу, как при загрузке с обычного input type="file"
.
Я тогда пробовал это на JSFiddle, и он работает в JSFiddle. Как я могу заставить его работать в моем браузере? Вот link to the files.
Фрагмент кода:
function handleFileSelect(evt) {
evt.stopPropagation();
evt.preventDefault();
var files = evt.dataTransfer.files; // FileList object.
// files is a FileList of File objects. List some properties.
var output = [];
for (var i = 0, f; f = files[i]; i++) {
output.push('<li><strong>', escape(f.name), '</strong> (', f.type || 'n/a', ') - ',
f.size, ' bytes, last modified: ',
f.lastModifiedDate ? f.lastModifiedDate.toLocaleDateString() : 'n/a',
'</li>');
}
document.getElementById('list').innerHTML = '<ul>' + output.join('') + '</ul>';
}
function handleDragOver(evt) {
evt.stopPropagation();
evt.preventDefault();
evt.dataTransfer.dropEffect = 'copy'; // Explicitly show this is a copy.
}
// Setup the dnd listeners.
var dropZone = document.getElementById('drop_zone');
dropZone.addEventListener('dragover', handleDragOver, false);
dropZone.addEventListener('drop', handleFileSelect, false);
.example {
padding: 10px;
border: 1px solid #ccc;
width: 50%;
margin: auto;
}
#drop_zone {
border: 2px dashed #bbb;
border-radius: 5px;
padding: 25px;
text-align: center;
font: 20pt bold'Vollkorn';
color: #bbb;
height: 100px;
}
<div class="example">
<div id="drop_zone">Drop files here</div>
<output id="list"></output>
</div>
Вы используете эти файлы непосредственно в браузере (например, файл: //some_dir/test.html), или вы их приютили в первую очередь? – nick
Я использую скобку с предварительным просмотром в реальном времени. Я попробовал это, и это не сработало. Затем я попробовал его прямо в браузере, и он тоже не работал. – Jessica
'Ctrl-Shift-I' в Chrome, чтобы открыть dev-tools и перейти на консольную панель и искать ошибки. Ваш фрагмент отлично работает для меня. – rism