首页 > 解决方案 > Iframe 层次结构之间的 PostMessage

问题描述

我正在尝试在祖孙 iframe 之间进行交流。

如果是一级(父母 - 孩子),我可以发送:

孩子 => 父母:
window.parent.postMessage("message", "*");

父母=>孩子:
iframe.contentWindow.postMessage(message, "*");

问题是当关系是祖孙关系时如何处理沟通。我试过了,window.parent.parent但它不起作用。

我想也许可以编写一些代理代码,这些代码将添加到中间 iframe 中并传递消息,但也许还有另一个更好的解决方案?

标签: javascripthtmliframe

解决方案


我最终添加了一些代理脚本。

并且还为每条消息添加了“发送者”键

<script>

    var father = 'aaa';
    var child = 'bbb';
    var proxyIframe;

    document.addEventListener('DOMContentLoaded', function(event) {
        proxyIframe = document.getElementById('proxyIframe');
    });


    window.addEventListener("message", function(e) {
        if (e.data) {
            if (e.data.sender === father) {
                proxyIframe.contentWindow && proxyIframe.contentWindow.postMessage(e.data, "*");
            } else if (e.data.sender === child) {
                window.parent.postMessage(e.data, "*");
            }
        }
    }, false);


</script>

希望它可以帮助任何人


推荐阅读