當我運行的代碼處理imageData被傳遞給Web工作人員,然後回來,然後Firefox運行良好,但Chrome提供了「未捕獲的錯誤:DATA_CLONE_ERR:DOM異常25」Web工作人員處理imageData與Firefox的工作,但不是鉻
搜索谷歌表明,舊版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];
因此Chrome無法在CanvasPixelArray傳遞給工人,但它可以通過規則陣列。但Firefox可以。
http:// stackoverflow。com/questions/7506635/uncaught-error-data-clone-err-dom-exception-25-by-web-worker – 2012-01-08 10:25:02
oops。謝謝。讓我試試:) – garg 2012-01-08 11:05:19
我還不清楚這一點。我傳遞的數據(context.getImageData(0,0,canvas.width,canvas.height).data)是一個大數組,不應該有任何循環引用錯誤。如果它正在通過postMessage在內部轉換爲JSON,那麼它應該只是通過出錯。據我所知,我沒有轉發DOM元素。 – garg 2012-01-08 12:02:05