Вот минимальный рабочий код, который является автономным, без внешних зависимостей:
function dropJSON(targetEl, callback) {
// disable default drag & drop functionality
targetEl.addEventListener('dragenter', function(e){ e.preventDefault(); });
targetEl.addEventListener('dragover', function(e){ e.preventDefault(); });
targetEl.addEventListener('drop', function(event) {
var reader = new FileReader();
reader.onloadend = function() {
var data = JSON.parse(this.result);
callback(data);
};
reader.readAsText(event.dataTransfer.files[0]);
event.preventDefault();
});
}
dropJSON(
document.getElementById("dropTarget"),
function(data) {
// dropped - do something with data
console.log(data);
}
);
Код не содержит никаких проверок работоспособности или обработки ошибок.