Веб-воркер, работающий с imageData, работает с Firefox, но не с Chrome

Когда я запускаю код, связанный с передачей imageData веб-воркеру, а затем обратно, Firefox работает отлично, но Chrome выдает сообщение «Неперехваченная ошибка: DATA_CLONE_ERR: DOM Exception 25»

Поиск в Google предполагает, что использовались более старые версии Chrome работать?

Я проверил еще кое-что, и мне показалось, что мне нужно запустить JSON.stringify и JSON.parse для изображений перед их отправкой, но затем он перестает работать везде. Код, который работает в 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'});
    }

Какой метод мне следует использовать для отправки этих изображений в приложение и веб-воркер?

Спасибо!

РЕДАКТИРОВАТЬ:

Если я копирую в обычный массив, Chrome начинает работать ...

var newImageData = [];
for (var i=0,len=myImageData.length;i<len;++i) newImageData[i] = myImageData[i];

Итак, хром не может передать CanvasPixelArray рабочему процессу, но может передать обычный массив. Но firefox может.

5
задан garg 8 January 2012 в 22:00
поделиться