当我运行处理将 imageData 传递给网络工作者然后返回的代码时,Firefox 运行良好,但 Chrome 给出“未捕获的错误:DATA_CLONE_ERR:DOM Exception 25”
搜索谷歌表明旧版本的 Chrome 曾经可以工作?
我又检查了一些,似乎我需要在发送图像数据之前对其运行 JSON.stringify 和 JSON.parse ,但随后它在任何地方都停止工作。在 FF 9 中工作的代码是:
图像.js:
var myImageData = context.getImageData(0, 0, canvas.width, canvas.height).data;
var worker = new Worker("http://direct.link/helpers/worker.js");
worker.postMessage(myImageData);
worker.onmessage = function(event) {
var value = event.data;
switch (value.cmd){
case 'last':
//doing stuff
break;
default:
//doing stuff
});
}
工人.js:
addEventListener('message', function(event) {
var myImageData = event.data;
// doing stuff.
sendItBack(colors);
});
};
function sendItBack(colors){
each(colors, function(index, value){
self.postMessage(value);
});
self.postMessage({'cmd': 'last'});
}
为了在应用程序和网络工作者之间来回发送此图像数据,我应该使用什么方法?
谢谢!
编辑:
如果我复制到常规数组,则 Chrome 开始工作......
var newImageData = [];
for (var i=0,len=myImageData.length;i<len;++i) newImageData[i] = myImageData[i];
因此 chrome 无法将 CanvasPixelArray 传递给工作人员,但它可以传递常规数组。但是火狐可以。