diff --git a/tracker/tracker/src/main/app/observer/observer.ts b/tracker/tracker/src/main/app/observer/observer.ts index d945f6fe6..65fd2756f 100644 --- a/tracker/tracker/src/main/app/observer/observer.ts +++ b/tracker/tracker/src/main/app/observer/observer.ts @@ -37,6 +37,8 @@ function isObservable(node: Node): boolean { return !isIgnored(node) } +const BASE_ATTRS = ['style', 'class'] + /* TODO: - fix unbinding logic + send all removals first (ensure sequence is correct) @@ -291,8 +293,14 @@ export default abstract class Observer { const width = el.clientWidth const height = el.clientHeight el = node.cloneNode() as Element - ;(el as HTMLElement | SVGElement).style.width = width + 'px' - ;(el as HTMLElement | SVGElement).style.height = height + 'px' + const attrs = el.getAttributeNames() + attrs.forEach((attr) => { + if (!attr.startsWith('data-openreplay') && !BASE_ATTRS.includes(attr)) { + el.removeAttribute(attr) + } + }) + ;(el as HTMLElement | SVGElement).style.width = `${width}px` + ;(el as HTMLElement | SVGElement).style.height = `${height}px` } this.app.send(CreateElementNode(id, parentID, index, el.tagName, isSVGElement(node))) diff --git a/tracker/tracker/src/main/app/sanitizer.ts b/tracker/tracker/src/main/app/sanitizer.ts index 20087a197..cc11c868e 100644 --- a/tracker/tracker/src/main/app/sanitizer.ts +++ b/tracker/tracker/src/main/app/sanitizer.ts @@ -2,7 +2,7 @@ import type App from './index.js' import { stars, hasOpenreplayAttribute } from '../utils.js' import { isElementNode } from './guards.js' -export declare const enum SanitizeLevel { +export enum SanitizeLevel { Plain, Obscured, Hidden, diff --git a/tracker/tracker/src/main/index.ts b/tracker/tracker/src/main/index.ts index 9af8dd72b..813f9753d 100644 --- a/tracker/tracker/src/main/index.ts +++ b/tracker/tracker/src/main/index.ts @@ -4,6 +4,8 @@ export { default as App } from './app/index.js' import { UserID, UserAnonymousID, RawCustomEvent, CustomIssue } from './app/messages.gen.js' import * as _Messages from './app/messages.gen.js' export const Messages = _Messages +import { SanitizeLevel as SanitizeEnum } from './app/sanitizer.js' +export const SanitizeLevel = SanitizeEnum import Connection from './modules/connection.js' import Console from './modules/console.js'