From 62321c7473c58daecabd60bd22a0fac88787d7a6 Mon Sep 17 00:00:00 2001 From: olzzon Date: Wed, 27 Aug 2025 08:57:29 +0200 Subject: [PATCH] fix: trigger postMessage when changed while already showing iframePreview --- .../ui/PreviewPopUp/Previews/IFramePreview.tsx | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/webui/src/client/ui/PreviewPopUp/Previews/IFramePreview.tsx b/packages/webui/src/client/ui/PreviewPopUp/Previews/IFramePreview.tsx index 4be2f655f9..b93067a262 100644 --- a/packages/webui/src/client/ui/PreviewPopUp/Previews/IFramePreview.tsx +++ b/packages/webui/src/client/ui/PreviewPopUp/Previews/IFramePreview.tsx @@ -17,8 +17,8 @@ export function IFramePreview({ content }: IFramePreviewProps): React.ReactEleme const onLoadListener = useCallback(() => { if (content.postMessage) { - const url = new URL(content.href) - iFrameElement.current?.contentWindow?.postMessage(content.postMessage, url.origin) + // use * as URL reference to avoid cors when posting message with new reference: + iFrameElement.current?.contentWindow?.postMessage(content.postMessage, '*') } }, [content.postMessage, content.href]) @@ -31,6 +31,14 @@ export function IFramePreview({ content }: IFramePreviewProps): React.ReactEleme return () => currentIFrame.removeEventListener('load', onLoadListener) }, [onLoadListener]) + // Handle postMessage updates when iframe is already loaded + useEffect(() => { + if (content.postMessage && iFrameElement.current?.contentWindow) { + // use * as URL reference to avoid cors when posting message with new reference: + iFrameElement.current.contentWindow.postMessage(content.postMessage, '*') + } + }, [content.postMessage, content.href]) + const style: Record = {} if (content.dimensions) { style['--preview-render-width'] = content.dimensions.width