diff --git a/tracker/tracker/.yarn/install-state.gz b/tracker/tracker/.yarn/install-state.gz index 2ed698d71..373bb507f 100644 Binary files a/tracker/tracker/.yarn/install-state.gz and b/tracker/tracker/.yarn/install-state.gz differ diff --git a/tracker/tracker/package.json b/tracker/tracker/package.json index e1ac73fb4..07a70f275 100644 --- a/tracker/tracker/package.json +++ b/tracker/tracker/package.json @@ -1,7 +1,7 @@ { "name": "@openreplay/tracker", "description": "The OpenReplay tracker main package", - "version": "15.0.0", + "version": "15.0.1-3", "keywords": [ "logging", "replay" diff --git a/tracker/tracker/src/main/app/index.ts b/tracker/tracker/src/main/app/index.ts index 5cb223a1a..5c6148f0e 100644 --- a/tracker/tracker/src/main/app/index.ts +++ b/tracker/tracker/src/main/app/index.ts @@ -506,34 +506,38 @@ export default class App { return console.error('Couldnt connect to event.source for child iframe tracking') } const id = await this.checkNodeId(event.source) - if (id && !this.trackedFrames.includes(data.context)) { - try { - this.trackedFrames.push(data.context) - await this.waitStarted() - const token = this.session.getSessionToken() - const order = this.trackedFrames.findIndex((f) => f === data.context) + 1 - if (order === 0) { - this.debug.error( - 'Couldnt get order number for iframe', - data.context, - this.trackedFrames, - ) - } - const iframeData = { - line: proto.iframeId, - id, - token, - // since indexes go from 0 we +1 - frameOrderNumber: order, - } - this.debug.log('Got child frame signal; nodeId', id, event.source, iframeData) - // @ts-ignore - event.source?.postMessage(iframeData, '*') - } catch (e) { - console.error(e) - } - } else { + if (!id) { this.debug.log('Couldnt get node id for iframe', event.source) + return + } + try { + if (this.trackedFrames.includes(data.context)) { + this.debug.log('Trying to observe already added iframe; ignore if its a restart') + } else { + this.trackedFrames.push(data.context) + } + await this.waitStarted() + const token = this.session.getSessionToken() + const order = this.trackedFrames.findIndex((f) => f === data.context) + 1 + if (order === 0) { + this.debug.error( + 'Couldnt get order number for iframe', + data.context, + this.trackedFrames, + ) + } + const iframeData = { + line: proto.iframeId, + id, + token, + // since indexes go from 0 we +1 + frameOrderNumber: order, + } + this.debug.log('Got child frame signal; nodeId', id, event.source, iframeData) + // @ts-ignore + event.source?.postMessage(iframeData, '*') + } catch (e) { + console.error(e) } } void signalId()