1
Я пытаюсь удалить файлы в папку на моем веб-сайте. Он отлично работает в хроме, но событие не срабатывает в сафари. Кажется, я получаю событие drop, запущенное через файлы. Хотя он работает, если я перетаскиваю элементы на веб-сайте.Safari jQuery on ('drop') не работает с файлами
$(document).on('dragstart', '.mtdrg', dragStart);
$(document).on('dragenter', '.mtdrp', dragEnter);
$(document).on('dragover', '.mtdrp', dragOver);
$(document).on('dragleave', '.mtdrp', dragLeave);
$(document).on('drop', '.mtdrp', drop);
$(document).on('dragend', '.mtdrp', dragEnd);
dragStart = function (e) {
var element = $(this),
instanceid = element.data('instanceid'),
entitytype = element.data('entitytype'),
vmtype = element.data('vmtype');
if (!isAnyMoveAllowed(entitytype, vmtype)) {
e.preventDefault();
return false;
}
$(document.documentElement).addClass('dragActive');
origBackgroundColor = $(this).css('backgroundColor');
this.style.opacity = 0.8;
this.style.backgroundColor = 'rgba(0, 161, 255,.75)';
e.originalEvent.dataTransfer.effectAllowed = 'move';
setDragData(instanceid, entitytype, vmtype);
};
dragOver = function (e) {
if (e.preventDefault) {
e.preventDefault(); // Necessary. Allows us to drop.
}
$(document.documentElement).addClass('dragActive');
var targetEntityType = $(this).data('entitytype');
var targetViewModelType = $(this).data('vmtype');
if (isMoveAllowed(targetEntityType, targetViewModelType, e)) {
e.originalEvent.dataTransfer.dropEffect = 'move';
} else {
e.originalEvent.dataTransfer.dropEffect = 'none';
}
return false;
};
dragEnter = function() {
$(this).addClass('mtdrpHover');
};
dragLeave = function() {
$(this).removeClass('mtdrpHover');
};
drop = function (e) {
if (e.stopPropagation) {
e.stopPropagation(); // stops the browser from redirecting.
}
if (e.originalEvent.dataTransfer.types != null) {
if (e.originalEvent.dataTransfer.files.length > 0) {
$(document.documentElement).removeClass('dragActive');
$(this).removeClass('mtdrpHover');
performFileDrop($(this).data('instanceid'), e);
return false;
}
}
var x = e.originalEvent.offsetX;
var y = e.originalEvent.offsetY;
performDrop($(this).data('instanceid'), $(this).data('dropcontroller'), $(this).data('dropaction'), x, y);
return false;
};