Skip to content

Commit

Permalink
[#1412] fix Changes in the canvas within the Shadow DOM cannot be rec…
Browse files Browse the repository at this point in the history
…orded
  • Loading branch information
lei.yang03 committed Feb 20, 2024
1 parent 314a8dd commit 51a1b7e
Showing 1 changed file with 21 additions and 5 deletions.
26 changes: 21 additions & 5 deletions packages/rrweb/src/record/observers/canvas/canvas-manager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -161,11 +161,27 @@ export class CanvasManager {

const getCanvas = (): HTMLCanvasElement[] => {
const matchedCanvas: HTMLCanvasElement[] = [];
win.document.querySelectorAll('canvas').forEach((canvas) => {
if (!isBlocked(canvas, blockClass, blockSelector, true)) {
matchedCanvas.push(canvas);
}
});

// traverse DOM and Shadow DOM
const traverseDom = (root: Document | ShadowRoot) => {
root.querySelectorAll('canvas').forEach((canvas) => {
if (
canvas instanceof HTMLCanvasElement &&
!isBlocked(canvas, blockClass, blockSelector, true)
) {
matchedCanvas.push(canvas);
}
});

root.querySelectorAll('*').forEach((elem) => {
if (elem.shadowRoot) {
traverseDom(elem.shadowRoot);
}
});
};

traverseDom(win.document);

return matchedCanvas;
};

Expand Down

0 comments on commit 51a1b7e

Please sign in to comment.