diff --git a/tracker/tracker-assist/.yarn/install-state.gz b/tracker/tracker-assist/.yarn/install-state.gz index c0e7a94a3..ed8a78a12 100644 Binary files a/tracker/tracker-assist/.yarn/install-state.gz and b/tracker/tracker-assist/.yarn/install-state.gz differ diff --git a/tracker/tracker/.yarn/install-state.gz b/tracker/tracker/.yarn/install-state.gz index 400632cdd..f885112b9 100644 Binary files a/tracker/tracker/.yarn/install-state.gz and b/tracker/tracker/.yarn/install-state.gz differ diff --git a/tracker/tracker/CHANGELOG.md b/tracker/tracker/CHANGELOG.md index 6f62fe48c..6a2a33362 100644 --- a/tracker/tracker/CHANGELOG.md +++ b/tracker/tracker/CHANGELOG.md @@ -1,3 +1,8 @@ +## 14.0.13 + +- fixes for restart logic +- fixed top context check in case of crossdomain placement + ## 14.0.11 & .12 - fix for node maintainer stability around `#document` nodes (mainly iframes field) diff --git a/tracker/tracker/package.json b/tracker/tracker/package.json index 7035511eb..e0b9b3dd8 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": "14.0.13-beta.3", + "version": "14.0.14-0", "keywords": [ "logging", "replay" diff --git a/tracker/tracker/src/main/app/observer/iframe_observer.ts b/tracker/tracker/src/main/app/observer/iframe_observer.ts index dc348eaed..96b0cc94a 100644 --- a/tracker/tracker/src/main/app/observer/iframe_observer.ts +++ b/tracker/tracker/src/main/app/observer/iframe_observer.ts @@ -30,11 +30,4 @@ export default class IFrameObserver extends Observer { this.app.send(CreateIFrameDocument(rootNodeId, docID)) }) } - - disconnect() { - if (this.docId !== undefined) { - this.app.send(RemoveNode(this.docId)) - } - super.disconnect() - } } diff --git a/tracker/tracker/src/main/index.ts b/tracker/tracker/src/main/index.ts index 566ca5e9c..bf109747d 100644 --- a/tracker/tracker/src/main/index.ts +++ b/tracker/tracker/src/main/index.ts @@ -95,6 +95,14 @@ function processOptions(obj: any): obj is Options { return true } +const canAccessTop = () => { + try { + return Boolean(window.top) + } catch { + return false + } +} + export default class API { public featureFlags: FeatureFlags @@ -104,11 +112,12 @@ export default class API { constructor(private readonly options: Options) { this.crossdomainMode = Boolean(inIframe() && options.crossdomain?.enabled) if (!IN_BROWSER || !processOptions(options)) { + console.error('OpenReplay: tracker called in a non-browser environment or with invalid options') return } if ( (window as any).__OPENREPLAY__ || - (!this.crossdomainMode && inIframe() && (window.top as any)?.__OPENREPLAY__) + (!this.crossdomainMode && inIframe() && canAccessTop() && (window.top as any)?.__OPENREPLAY__) ) { console.error('OpenReplay: one tracker instance has been initialised already') return