Skip to content

Commit 4dd6ba9

Browse files
Merge pull request #560 from magento/render-fix
[1.3-develop] Fix iframe event handling with more than one page builder instance on the page
2 parents 38c15aa + 53d3a44 commit 4dd6ba9

File tree

4 files changed

+13
-6
lines changed

4 files changed

+13
-6
lines changed

app/code/Magento/PageBuilder/view/adminhtml/web/js/master-format/render.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/code/Magento/PageBuilder/view/adminhtml/web/js/master-format/render/frame.js

Lines changed: 6 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/code/Magento/PageBuilder/view/adminhtml/web/ts/js/master-format/render.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,13 +80,13 @@ export default class MasterFormatRenderer {
8080
this.channel = new MessageChannel();
8181
const frame = this.getRenderFrame();
8282
window.addEventListener("message", (event) => {
83-
if (!this.ready && event.data === "PB_RENDER_READY") {
83+
if (!this.ready && event.data.name === "PB_RENDER_READY" && this.stageId === event.data.stageId) {
8484
frame.contentWindow.postMessage("PB_RENDER_PORT", "*", [this.channel.port2]);
8585
this.ready = true;
8686
this.readyDeferred.resolve();
8787
}
8888
});
89-
frame.src = Config.getConfig("render_url");
89+
frame.src = Config.getConfig("render_url") + "?stageId=" + this.stageId;
9090
}
9191

9292
/**

app/code/Magento/PageBuilder/view/adminhtml/web/ts/js/master-format/render/frame.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ const debounceRender = _.debounce((message: {stageId: string, tree: TreeItem}, r
4141
* Listen for requests from the parent window for a render
4242
*/
4343
export default function listen(config: ConfigInterface) {
44+
const stageId = window.location.href.split("?")[1].split("=")[1];
45+
4446
Config.setConfig(config);
4547
Config.setMode("Master");
4648

@@ -74,7 +76,7 @@ export default function listen(config: ConfigInterface) {
7476
);
7577

7678
// Inform the parent iframe that we're ready to receive the port
77-
window.parent.postMessage("PB_RENDER_READY", "*");
79+
window.parent.postMessage({name: "PB_RENDER_READY", stageId}, "*");
7880
}
7981

8082
/**

0 commit comments

Comments
 (0)