Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/91.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS:将DataTransferItemList传输到WebWorker_Javascript_Html_Drag And Drop_Web Worker - Fatal编程技术网

Javascript JS:将DataTransferItemList传输到WebWorker

Javascript JS:将DataTransferItemList传输到WebWorker,javascript,html,drag-and-drop,web-worker,Javascript,Html,Drag And Drop,Web Worker,我想使用SynchronousJS文件系统API,因此,这段代码必须放在webworker上。webworker的传入数据取自dragndrop事件(dataTransfer.items),以便能够使用chromes最新功能上载文件夹。 不幸的是,chrome取消了每一次尝试,并出现了一个“未捕获错误:数据\u克隆\u错误:DOM异常25” 基本上是这样的: var files=e.dataTransfer.items; [copying the DataTransferItemList]

我想使用SynchronousJS文件系统API,因此,这段代码必须放在webworker上。webworker的传入数据取自dragndrop事件(dataTransfer.items),以便能够使用chromes最新功能上载文件夹。 不幸的是,chrome取消了每一次尝试,并出现了一个“未捕获错误:数据\u克隆\u错误:DOM异常25”

基本上是这样的:

  var files=e.dataTransfer.items; [copying the DataTransferItemList]
  var worker=new Worker(...)
  worker.postMessage(files);
这是行不通的。知道吗,为什么? 这里可以找到一个类似(但不是100%相同)的例子:-这似乎有效。它不是DataTransferItemList,而是那里的文件列表-这种类型的列表不能序列化吗

谢谢,
Christoph

您应该使用
event.dataTransfer.files
来获取
文件列表。然后,您可以将其直接发布给员工:

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

看,这是一个有趣的问题。但对于starter,您不会通过将对象分配给不同的变量来复制它。该规则适用于所有使用垃圾收集器的语言。您只能向web worker发布字符串或字节数组,但我希望将来会有一个解决方案