From 2fb27a3aa21f412b0a554e756043cb673be77479 Mon Sep 17 00:00:00 2001 From: Eoghan Murray Date: Mon, 21 Feb 2022 15:53:01 +0000 Subject: [PATCH] Use the .closest method to transfer recursive parent class checking into the browser engine for an expected performance improvement https://developer.mozilla.org/en-US/docs/Web/API/Element/closest available on all modern browsers --- packages/rrweb/src/utils.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/rrweb/src/utils.ts b/packages/rrweb/src/utils.ts index 8ae1635fe6..91376444ef 100644 --- a/packages/rrweb/src/utils.ts +++ b/packages/rrweb/src/utils.ts @@ -230,7 +230,11 @@ export function isBlocked(node: Node | null, blockClass: blockClass): boolean { if (node.nodeType === node.ELEMENT_NODE) { let needBlock = false; if (typeof blockClass === 'string') { - needBlock = (node as HTMLElement).classList.contains(blockClass); + if ((node as HTMLElement).closest !== undefined) { + return (node as HTMLElement).closest('.' + blockClass) !== null; + } else { + needBlock = (node as HTMLElement).classList.contains(blockClass); + } } else { (node as HTMLElement).classList.forEach((className) => { if (blockClass.test(className)) {