javascript - JS : Transfer DataTransferItemList to WebWorker

标签 javascript html drag-and-drop web-worker

我想使用同步 JS 文件系统 API,因此,必须将这段代码交给网络 worker 。 webworker 的传入数据取自 dragndrop 事件 (dataTransfer.items),以便能够使用 chrome 最新功能上传文件夹。 遗憾的是,每次尝试都被 chrome 取消,并显示“ Uncaught Error :DATA_CLONE_ERR:DOM 异常 25”。

基本上,它是这样的:

  var files=e.dataTransfer.items; [copying the DataTransferItemList]
  var worker=new Worker(...)
  worker.postMessage(files);

这是行不通的。任何想法,为什么? 可以在此处找到类似(但不是 100% 相同)的示例:http://www.html5rocks.com/en/tutorials/file/filesystem-sync/ - 这似乎有效。它不是 DataTransferItemList,它是一个 FileList - 不能序列化这种类型的列表吗?

谢谢, 克里斯托夫

最佳答案

您应该使用 event.dataTransfer.files 来获取 FileList。然后您可以将其直接发布给工作人员:

var files=e.dataTransfer.files || e.target.files; // Cross browser FileList
var worker=new Worker(...);
worker.postMessage({files: files});

关于javascript - JS : Transfer DataTransferItemList to WebWorker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14041103/

相关文章:

javascript - 在 Sencha Touch selectfield 中填充图标

javascript - 使用 get 函数导入的按钮不起作用

javascript - 获取多项选择的选项值

javascript - 如何在 div 重新加载时隐藏元素

javascript - MongoDB - 多个查询和单个文档结果

javascript - 将内联 JavaScript 迁移到外部文件

Swift (iOS) 在一个手势中创建和拖动项目(传递触摸事件)

javascript - Nodejs 处理上传的文件

javascript - 在 Raphael 中如何使元素不可拖动?

javascript - 如何访问 json 元素