iframe层次结构之间的PostMessage

时间:2019-05-29 16:06:04

标签: javascript html iframe

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

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

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

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

问题是当祖父和孙子之间的关系如何处理。 我尝试使用window.parent.parent,但是它不起作用。

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

1 个答案:

答案 0 :(得分:0)

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

并且还添加到每个消息的“发件人”键

<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>

希望它可以帮助任何人