Как правильно разместить сообщение в iframe? - PullRequest
0 голосов
/ 05 мая 2020

Много вопросов по этому поводу, но, похоже, ни один из ответов не работает.

Я хочу отправить сообщение из моего главного окна в iframe. Но ничего из того, что я делаю, похоже, не работает, ошибок нет, сообщение просто не приходит. Как показано здесь (должен быть Fiddle, поскольку фрагмент SO, похоже, не работал):

https://jsfiddle.net/z7w2tm0j/17/

Я создаю iframe:

   const iframe = document.createElement('iframe');
   iframe.innerHTML = 'Message goes here';
   iframe.setAttribute('id', 'sandboxIframe'); 
   document.body.appendChild(iframe);

прикрепите компонент скрипта, который добавляет слушателя сообщений:

var iframeDocument = iframe.contentDocument //Can also add directly to iframe, same result


const script = document.createElement('script');
script.setAttribute('type', 'text/javascript');
script.innerHTML = `

        window.addEventListener('message', (event) => {

          console.log("got message:");
          console.log(event);
        });
        window.postMessage('test', '*');//this message arrives
    `;

 iframeDocument.body.appendChild(script)

Затем вызовите postMessage из кадра анимации,

 const update = ()=>{
    iframe.contentWindow.postMessage('foo','*'); //this message never arrives (if targetOrigin is not '*' this throws an exception)
    console.log("Sent message");
        window.requestAnimationFrame(update);

 }
 update();

Что за маги c вещь, которую мне не хватает чтобы это работало?

1 Ответ

0 голосов
/ 05 мая 2020

Получается, скрипка заработала. Не обратил внимания :)

поменял

 iframe.appendChild(script)

на

 iframeDocument.body.appendChild(script)

Исправил.

Всем спасибо

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