JS: Drag and Drop DataTransfer Object не работает в Safari. Альтернатива? - PullRequest
2 голосов
/ 05 мая 2020

У меня есть следующий код. Он создает новый список файлов для редактирования объекта списка файлов входного файла, чтобы я мог создать список всех файлов, которые пользователь хочет загрузить, и дать ему возможность удалить или повторно загрузить некоторые из них:

function FileListItem(a) {
  a = [].slice.call(Array.isArray(a) ? a : arguments);
  for (var c, b = c = a.length, d = !0; b-- && d;) d = a[b] instanceof File;
  if (!d) throw new TypeError("expected argument to FileList is File or array of File objects");
  for (b = (new ClipboardEvent("")).clipboardData || new DataTransfer; c--;) b.items.add(a[c]);
  return b.files;
}

К сожалению, он не будет работать на iOS и MacOS, поскольку конструктор DataTransfer не существует. Я получаю следующую ошибку:

[Error] TypeError: function is not a constuctor (evaluating 'new DataTransfer')

Здесь вы можете увидеть совместимость объекта DataTransfer: developer.mozilla.org

Теперь мой вопрос: есть ли альтернатива, которая работает в Safari?

...