【问题标题】:How to simulate a drop event in gmail's compose window如何在gmail撰写窗口中模拟放置事件
【发布时间】: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 正在做什么,但他们的代码是封闭源代码,几乎不可能理解他们丑陋的代码。

【问题讨论】:

标签: javascript google-chrome-extension inboxsdk


【解决方案1】:

这是因为您新创建的 Event 的 isTrusted 属性设置为 false。当您尝试将事件分派到目标节点时,浏览器会读取此属性并且不执行任何操作。

【讨论】:

    猜你喜欢
    • 2013-05-29
    • 1970-01-01
    • 1970-01-01
    • 2014-09-15
    • 1970-01-01
    • 1970-01-01
    • 2014-11-16
    • 2014-04-17
    • 2012-12-07
    相关资源
    最近更新 更多