fix: canvas data in iframe wasn't applied in the fast-forward mode (#944)
* fix: canvas data in iframe wasn't applied in the fastforward mode * add more comments * Update packages/rrdom/src/diff.ts Co-authored-by: Justin Halsall <Juice10@users.noreply.github.com> * apply Juice10's suggestion Co-authored-by: Justin Halsall <Juice10@users.noreply.github.com>
This commit is contained in:
@@ -228,13 +228,20 @@ function buildNode(
|
||||
// handle internal attributes
|
||||
if (tagName === 'canvas' && name === 'rr_dataURL') {
|
||||
const image = document.createElement('img');
|
||||
image.src = value;
|
||||
image.onload = () => {
|
||||
const ctx = (node as HTMLCanvasElement).getContext('2d');
|
||||
if (ctx) {
|
||||
ctx.drawImage(image, 0, 0, image.width, image.height);
|
||||
}
|
||||
};
|
||||
image.src = value;
|
||||
type RRCanvasElement = {
|
||||
RRNodeType: NodeType;
|
||||
rr_dataURL: string;
|
||||
};
|
||||
// If the canvas element is created in RRDom runtime (seeking to a time point), the canvas context isn't supported. So the data has to be stored and not handled until diff process. https://github.com/rrweb-io/rrweb/pull/944
|
||||
if (((node as unknown) as RRCanvasElement).RRNodeType)
|
||||
((node as unknown) as RRCanvasElement).rr_dataURL = value;
|
||||
} else if (tagName === 'img' && name === 'rr_dataURL') {
|
||||
const image = node as HTMLImageElement;
|
||||
if (!image.currentSrc.startsWith('data:')) {
|
||||
|
||||
Reference in New Issue
Block a user