【发布时间】:2019-05-12 09:52:02
【问题描述】:
我有一个用例,我必须使用 chrome 扩展程序以编程方式将附件附加到 Gmail 撰写窗口。 inboxSDK 具有执行此操作的 API,但我不想仅针对这一功能包含一个庞大的库。
我尝试通过在撰写窗口上模拟拖放事件来做到这一点。我以这种方式创建了一个放置事件:
var fakeDropEvent = new DragEvent('drop');
Object.defineProperty(fakeDropEvent, 'dataTransfer', {
value: {files: [blob]}
});
我给它一个 dataTransfer 属性,该属性具有带有 Blob 对象数组作为值的 files 属性。但是在撰写窗口上调度这个事件并没有做任何事情。
当我试图捕捉一个正常的 drop 事件(由用户手动触发的事件)时,我注意到它的 event.dataTransfer.files 有一个 FileList 对象,而对于我正在制作的假事件,我返回一个 blob 对象数组.我猜这是我面临的问题。 Gmail 期待 FileList,但没有得到它。
我尝试自己创建一个FileList 对象,但没有成功。有什么办法可以实现这样的事情。
我试图阅读 inboxSDK 正在做什么,但他们的代码是封闭源代码,几乎不可能理解他们丑陋的代码。
【问题讨论】:
-
内容脚本在孤立的世界中运行,所以你需要Insert code into the page context using a content script
标签: javascript google-chrome-extension inboxsdk