У меня есть случай, когда мне нужно программно прикреплять вложения к окну создания Gmail, используя расширение Chrome. inboxSDK имеет API для этого, но я не хочу включать огромную библиотеку только для этой функции.
Я попытался сделать это, имитируя событие перетаскивания в окне создания.Я создаю событие удаления следующим образом:
var fakeDropEvent = new DragEvent('drop');
Object.defineProperty(fakeDropEvent, 'dataTransfer', {
value: {files: [blob]}
});
Я даю ему свойство dataTransfer, которое имеет свойство files с массивом объектов Blob
в качестве значения.Но отправка этого события в окне создания ничего не делает.Когда я попытался перехватить нормальное событие удаления (которое было инициировано пользователем вручную), я заметил, что его event.dataTransfer.files
имеет объект FileList , тогда как для ложного события, которое я делаю, я возвращаюмассив объектов BLOB.Я предполагаю, что это проблема, с которой я сталкиваюсь.Gmail ожидает FileList
, но не получает его.Я пытался создать объект FileList
самостоятельно, но безуспешно.Есть ли способ, что-то подобное может быть достигнуто.Я пытался прочитать, что делает inboxSDK, но их код с закрытым исходным кодом, и почти невозможно понять их код uglified.