2015-02-10 6 views
0

В рамках пользовательской библиотеки, я выделил следующий фрагмент кода, запускаемая с нитью основного браузера, который производит ошибку: DataCloneError: The object could not be cloned.Может не PostMessage (CanvasRenderingContext2D)

Цель SNIPPET заключается в обеспечении worker с экземпляром CanvasRenderingContext2D.

canvas = document.createElement("canvas"); 
canvas.width = 1; 
canvas.height = 1; 

worker.postMessage(canvas.getContext("2d")); 

ли postMessage недостаточность вследствие специфического атрибута CanvasRenderingContext2D, который не может быть «клонированных»? Какие обходные пути я могу рассмотреть?

ответ

1

Is postMessage failure due to a specific attribute of CanvasRenderingContext2D which cannot be "cloned"?

Я бы предположил, что это будут все функции.

Things that don't work with structured clones:

Error and Function objects cannot be duplicated by the structured clone algorithm; attempting to do so will throw a DATA_CLONE_ERR exception.

Звучит так, как будто вы сталкиваетесь.

Вы не можете отправить весь <canvas> элемент либо, потому что

Attempting to clone DOM nodes will likewise throw a DATA_CLONE_ERR exception.

Я понятия не имею, если это будет работать, но то, что вы, вероятно, нужно только контекст из свойств (FillStyle, LineHeight и т.д.). Вы можете просто извлечь их (JSON.parse(JSON.stringify(canvas.getContext("2d")))) и попробовать отправить их. :/

Смежные вопросы