diff --git a/front/src/Api/IframeListener.ts b/front/src/Api/IframeListener.ts index c875ebbb..7e51a281 100644 --- a/front/src/Api/IframeListener.ts +++ b/front/src/Api/IframeListener.ts @@ -60,14 +60,14 @@ class IframeListener { // Do we trust the sender of this message? // Let's only accept messages from the iframe that are allowed. // Note: maybe we could restrict on the domain too for additional security (in case the iframe goes to another domain). - let found = false; + let foundSrc: string | null = null; for (const iframe of this.iframes) { if (iframe.contentWindow === message.source) { - found = true; + foundSrc = iframe.src; break; } } - if (!found) { + if (!foundSrc) { return; } @@ -86,8 +86,12 @@ class IframeListener { else if(payload.type === 'goToPage' && isGoToPageEvent(payload.data)) { scriptUtils.goToPage(payload.data.url); } - else if(payload.type === 'openCoWebSite' && isOpenCoWebsite(payload.data)) { - scriptUtils.openCoWebsite(payload.data.url); + else if (payload.type === 'openCoWebSite' && isOpenCoWebsite(payload.data)) { + const scriptUrl = [...this.scripts.keys()].find(key => { + return this.scripts.get(key)?.contentWindow == message.source + }) + + scriptUtils.openCoWebsite(payload.data.url, scriptUrl || foundSrc); } else if(payload.type === 'closeCoWebSite') { scriptUtils.closeCoWebSite(); diff --git a/front/src/Api/ScriptUtils.ts b/front/src/Api/ScriptUtils.ts index 1a7fed0f..e1c94507 100644 --- a/front/src/Api/ScriptUtils.ts +++ b/front/src/Api/ScriptUtils.ts @@ -11,8 +11,8 @@ class ScriptUtils { } - public openCoWebsite(url : string){ - coWebsiteManager.loadCoWebsite(url,url); + public openCoWebsite(url: string, base: string) { + coWebsiteManager.loadCoWebsite(url, base); } public closeCoWebSite(){