未捕获错误:DATA_CLONE_ERR: DOM Exception 25'由网络工作者抛出
'Uncaught Error: DATA_CLONE_ERR: DOM Exception 25' thrown by web worker
所以我要创建一个web worker:
var arrayit = function(obj) {
return Array.prototype.slice.call(obj);
};
work = arrayit(images);
console.log(work);
//work = images.push.apply( images, array );
// Method : "load+scroll"
var worker = new Worker('jail_worker.js');
worker.postMessage(work)
worker.onmessage = function(event) {
console.log("Worker said:" + event.data);
};
images是什么
$.jail.initialStack = this;
// Store the selector into 'triggerEl' data for the images selected
this.data('triggerEl', (options.selector) ? $(options.selector) : $window);
var images = this;
我想我的问题与此有关:
http://dev.w3.org/html5/spec/Overview.html safe-passing-of-structured-data
我怎样才能绕过这个?如您所见,我尝试将宿主对象切片为一个实际数组,但这不起作用。
这是我正在破解的文件的链接:
https://github.com/jtmkrueger/JAIL更新 --------------------------------------------------
根据@davin:
接受的答案,我必须这样做var arrayit = function(obj) {
return Array.prototype.slice.call(obj);
};
imgArray = arrayit(images);
work = _.map(images, function(i){ return i.attributes[0].ownerElement.outerHTML; });
var worker = new Worker('jail_worker.js');
worker.postMessage(work)
worker.onmessage = function(event) {
console.log("Worker said:" + event.data);
};
最初的异常很可能被抛出,因为你试图传递一个host对象给web worker(很可能是一个dom元素)。您随后的尝试不会抛出相同的错误。记住两个关键点:不同线程之间没有共享内存,并且web worker不能操作DOM。
postMessage
支持将结构化数据传递给线程,并将内部序列化(或以其他方式递归地复制数据的值)数据。序列化DOM元素通常会导致循环引用错误,所以最好的办法是map
你想要序列化的对象,并提取相关数据在web worker中重建。
Uncaught DataCloneError: An object could not be cloned
在尝试保存到indexeddb函数作为对象的键时被复制。需要再次检查保存的对象是否可序列化
相关文章:
- 网络工作者突然终止工作
- 电子框架是否允许网络工作者进行多线程处理
- 我如何使用HTML5网络工作者与谷歌关闭工具
- 正确的使用方式是什么.js与网络工作者
- 如何在网络工作者中访问网络套接字
- 如何在没有网络工作者的情况下运行多个脚本
- 两个javascript网络工作者连续打印输出-为什么不同时打印呢
- 我可以在网络工作者中加载AMD模块吗
- 如何从节点-网络工作者-线程向控制台发送错误
- 使用网络工作者和画布合并 png 图像
- 网络工作者支持
- Webpack 网络工作者加载器不工作
- 网络工作者如何在单核机器中工作
- 如何在网络工作者中声明 angularjs
- 究竟什么是网络工作者以及何时使用它们
- 具有多个参数的 HTML 5 网络工作者
- 网络工作者发布消息处理顺序
- 识别网络工作者环境
- 我可以在网络工作者上访问文档cookie吗
- 如何处理网站上的大规模计算?网络工作者或CGI