From 203122630c5da1bc7025e714d0c02dc1bdbea8a9 Mon Sep 17 00:00:00 2001 From: Yanzhen Yu Date: Wed, 1 Apr 2026 12:00:00 +0800 Subject: [PATCH] fix skip event logic when finding next active event --- src/replay/index.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/replay/index.ts b/src/replay/index.ts index 6ca3efd4..adf54827 100644 --- a/src/replay/index.ts +++ b/src/replay/index.ts @@ -55,7 +55,7 @@ export class Replayer { private lastPlayedEvent: eventWithTime; private nextUserInteractionEvent: eventWithTime | null; - private noramlSpeed: number; + private noramlSpeed: number = -1; private missingNodeRetryMap: missingNodeMap = {}; @@ -70,7 +70,6 @@ export class Replayer { this.setConfig(Object.assign({}, config)); this.setupDom(); this.emitter.on('resize', this.handleResize as mitt.Handler); - this.noramlSpeed = this.config.speed; } public on(event: string, handler: mitt.Handler) { @@ -81,6 +80,9 @@ export class Replayer { Object.keys(config).forEach((key: keyof playerConfig) => { this.config[key] = config[key]!; }); + if (!this.config.skipInactive) { + this.noramlSpeed = -1; + } } public getMetaData(): playerMetaData { @@ -214,7 +216,7 @@ export class Replayer { } if (this.config.skipInactive && !this.nextUserInteractionEvent) { for (const _event of this.events) { - if (_event.delay! <= event.delay!) { + if (_event.timestamp! <= event.timestamp!) { continue; } if (this.isUserInteraction(_event)) { @@ -567,8 +569,12 @@ export class Replayer { } private restoreSpeed() { + if (this.noramlSpeed === -1) { + return; + } const payload = { speed: this.noramlSpeed }; this.setConfig(payload); this.emitter.emit('skip-end', payload); + this.noramlSpeed = -1; } }