0

我正在将iframe-resizer用于跨域应用程序,Iframe 在应用程序内加载良好,但是当我单击一个重定向到 Iframe 应用程序上其他 URL 的按钮时,它给了我错误:

无法在“DOMWindow”上执行“postMessage”:提供的目标原点 () 与接收窗口的原点 () 不匹配。

我已经给出了 Iframe 的 src ,例如https://example.com,现在 example.com 上的主页加载正常,但是当我重定向到其他页面时,其 URL 像https://example.com/product/details然后在上面错误来了。

我已经升级到 4.1 版本的库并且问题已解决,但它仍然在控制台上显示错误。现在我面临重定向后无法在页面内获取父应用程序 URI 的问题。

我正在使用 document.referrer 来获取它,它在 iframe 的主页上运行良好,但在重定向后的其他页面上却不行,我还面临移动设备上重定向页面的高度问题,它显示出很长的空白空间,原因都是孩子页面正在选择 iframe 主页的高度,而不是调整高度。

这两个应用程序都托管在 IIS 上,并且在我们的控制之下。任何帮助/建议将不胜感激。

4

1 回答 1

1

我使用来自父应用程序的 window.postMessage 向子 iframe 应用程序发布消息,并使用属性 event.origin 能够获取托管 iframe 的父应用程序的 URI,因为当重定向发生时,它将子应用程序页面作为其给出错误 URI 的父级。

父应用:

var frame = document.getElementById('wizardIframe');
frame.contentWindow.postMessage(window.location.href, '*');

子页面

 window.addEventListener('message', function (event) {
        window.iFrameResizer = {
            targetOrigin: event.origin
        }
于 2019-08-25T19:04:23.323 回答