Khi tôi chạy mã giao dịch với imageData được truyền tới một nhân viên web và sau đó quay lại, Firefox hoạt động tốt nhưng Chrome cung cấp "Lỗi không bắt buộc: DATA_CLONE_ERR: Ngoại lệ DOM 25"Nhân viên web xử lý imageData làm việc với Firefox nhưng không phải Chrome
Tìm kiếm trên google cho thấy các phiên bản cũ hơn của Chrome được sử dụng để hoạt động?
Tôi đã kiểm tra một số chi tiết và dường như tôi cần chạy JSON.stringify và JSON.parse trên imagedata trước khi gửi nhưng sau đó nó ngừng hoạt động ở mọi nơi. Các mã mà làm việc trong FF 9 là:
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'});
}
phương pháp gì tôi nên sử dụng để gửi imageData này qua lại các ứng dụng và nhân viên web?
Cảm ơn!
EDIT:
Nếu tôi sao chép vào một mảng bình thường khi đó Chrome bắt đầu làm việc ...
var newImageData = [];
for (var i=0,len=myImageData.length;i<len;++i) newImageData[i] = myImageData[i];
Vì vậy, chrome không thể vượt qua một CanvasPixelArray để một công nhân nhưng nó có thể vượt qua một mảng thông thường. Nhưng firefox có thể.
http: // stackoverflow.com/questions/7506635/uncaught-error-data-clone-err-dom-exception-25-ném-bởi-web-nhân viên –
oops. Cảm ơn. Hãy để tôi thử điều đó :) – garg
Tôi vẫn chưa rõ về điều này. Dữ liệu mà tôi đang truyền (context.getImageData (0, 0, canvas.width, canvas.height) .data) là một mảng lớn và không nên có bất kỳ lỗi tham chiếu vòng tròn nào. Nếu nó đang được chuyển đổi sang JSON nội bộ bởi postMessage thì nó chỉ cần đi qua với lỗi. Và theo như tôi biết, tôi không chuyển tiếp một phần tử DOM. – garg