Как отправить сообщение в iframe и обратно?

window.top.postMessage('', '*');

iFrame.contentWindow.postMessage('', '*');


Ответы (1 шт):

Автор решения: O K

1.html

<!DOCTYPE html>
<html lang="">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Айфрэйм с кнопкой, и сообщением для родителя</title>
</head>

<body>
  <script>
    //скрипт с сообщением, отправитель письма родителю
    function iframe_popup() {
      window.top.postMessage('Сообщение из 1.html', '*');
    }
  </script>

  <input type="button" onclick="iframe_popup()" value="Запрос из айфрейма">

  <script>
    //скрипт слушатель, получатель письма от родителя
    window.addEventListener('message', function(msg) {
      alert(msg.data); //Сообщение отправленно в 1.html
     
    });
  </script>

</body>

</html>

2.html

<!DOCTYPE html>
<html lang="">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Страница со слушателем из айфрэма, и кнопкой с сообщением в айфрейм</title>
</head>

<body>
  <iframe id="iFrame" src="./1.html"></iframe>
  <script>
    //скрипт слушатель, получатель письма из айфрейма
    window.onmessage = function(event) {
        alert(event.data);
    };
  </script>

  <button id="postMessage">Запрос в айфрейм</button>
  <script>
    //скрипт с сообщением, отправитель письма в айфрейм
    var button = document.getElementById('postMessage');
    var iFrame = document.getElementById('iFrame');
    button.addEventListener('click', function() {
      iFrame.contentWindow.postMessage('Сообщение отправленно в 1.html', '*'); //В первом файле сработает алерт и покажет это сообщение
    });
  </script>

</body>

</html>

→ Ссылка