Когда я запускаю код, связанный с передачей imageData веб-работнику, а затем обратно, Firefox отлично работает, но Chrome выдает «Uncaught Error: DATA_CLONE_ERR: DOM Exception 25»
Поиск в Google предполагает, что более старые версииХрома работал?
Я проверил еще немного, и мне показалось, что мне нужно запустить JSON.stringify и JSON.parse для imagedata перед его отправкой, но затем он перестает работать везде.Код, который работает в FF 9:
image.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
});
}
worker.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'});
}
Какой метод следует использовать для отправкиэто imagedata назад и вперед приложение и веб-работник?
Спасибо!
РЕДАКТИРОВАТЬ:
Если я скопирую в обычный массив, то Chrome начнет работать ...
var newImageData = [];
for (var i=0,len=myImageData.length;i<len;++i) newImageData[i] = myImageData[i];
Таким образом, Chrome не может передать CanvasPixelArray работнику, но он может передать обычный массив.Но Firefox может.