javascript - 如何通过 Chrome 扩展模拟文件拖放上传?

标签 javascript jquery google-chrome-extension drag-and-drop

我需要模拟用户将图像拖放到文件上传 div 上。我将从 aws s3 存储桶 中提取图像。

This question涵盖如何模拟事件。但是,drop 是通过调用 dropzone div 上的 .drop() 事件来完成的。

但是,就我而言,代码将在由 Chrome 扩展程序注入(inject)的内容脚本中运行。这意味着,据我所知,我无法在页面的 dropzone div 上调用 drop() 方法。

还有其他方法来模拟拖放功能吗?

如果重要的话,我正在处理的页面似乎正在使用 jQuery UI ddmanager 来控制其文件 dropzone div

最佳答案

您可能想检查并尝试 Passing multiple files with drag and drop 中给出的现有拖放代码示例您实际上可以将一个或多个文件从桌面拖放到浏览器中。

<div id=”dropzone”></div>

var dropzone = document.getElementById('dropzone');
dropzone.ondrop = function(e) {
  var length = e.dataTransfer.files.length;
  for (var i = 0; i < length; i++) {
    var file = e.dataTransfer.files[i];
    ... // do whatever you want
  }
};

但是,它还指出,当您尝试传递文件夹时,请注意它将被拒绝或被视为 File 对象,从而导致失败。对于文件夹,您需要更改处理放置对象的方式。

您可能还想阅读Exploring the FileSystem APIs有关文件系统 API 以及新的拖放功能的更多信息,请阅读此 document .

最后,这些 GitHub 帖子也可能有帮助:

关于javascript - 如何通过 Chrome 扩展模拟文件拖放上传?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40640881/

相关文章:

javascript - 是否可以将 jQuery $.when 与 bool 标志一起使用?

jQuery 选择父级

css - Chrome 扩展——防止 CSS 被改写

javascript - 用 stroke-dasharray 和事件颜色填充划分半圆

javascript - 在提交不提交表单时替换 Div

JQuery:Ajax .load 问题

google-chrome-extension - 监听器实例化多次

google-chrome-extension - 渐进式网络应用程序(PWA)与电子与浏览器扩展

javascript - 尝试从控制台获取我的 javascript 时出现未定义的消息

javascript - 在响应式网站上无法将高度缩放到宽度