如何在gmail的撰写窗口中模拟放置事件

时间:2018-12-11 11:49:58

标签: javascript google-chrome-extension inboxsdk

我有一个用例,其中我必须使用Chrome扩展程序以编程方式将附件附加到Gmail撰写窗口。 inboxSDK具有执行此操作的API,但我不想为此功能提供一个庞大的库。

我尝试通过在撰写窗口上模拟拖放事件来做到这一点。我以这种方式创建放置事件:

            var fakeDropEvent = new DragEvent('drop');
            Object.defineProperty(fakeDropEvent, 'dataTransfer', {
              value: {files: [blob]}
            });

我给它一个dataTransfer属性,它具有files属性,其中包含Blob个对象数组作为值。但是在compose窗口上调度此事件不会执行任何操作。 当我尝试捕获普通的放置事件(由用户手动触发的事件)时,我注意到它的event.dataTransfer.files有一个FileList对象,而对于我正在制作的假事件,我返回了一个Blob对象数组。我猜这是我面临的问题。 Gmail期望使用FileList,但没有收到。 我尝试自己创建一个FileList对象,但未成功。有什么办法可以实现这样的目标。 我试图阅读inboxSDK在做什么,但是他们的代码是封闭源代码,几乎不可能理解他们的丑陋代码。

0 个答案:

没有答案