PostMessage между иерархией Iframe - PullRequest
0 голосов
/ 29 мая 2019

Я пытаюсь связаться между дедушкой и внуками iframes.

В случае одного уровня (родитель - ребенок), я могу отправить:

Child => parent:
window.parent.postMessage("message", "*");

Parent => child:
iframe.contentWindow.postMessage(message, "*");

Проблема заключается в том, как обращаться с общением, когда отношения деда и внука.Я пробовал с window.parent.parent, но это не работает.

Я подумал, может быть, написать какой-нибудь прокси-код, который будет добавлен в средний iframe и будет передавать сообщения, но, может быть, есть другое лучшее решение для этого?

1 Ответ

0 голосов
/ 30 мая 2019

Я добавил несколько прокси-скриптов.

А также добавляет к каждому сообщению «ключ отправителя»

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

Надеюсь, это может кому-нибудь помочь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...