我想使用同步 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/