Много вопросов по этому поводу, но, похоже, ни один из ответов не работает.
Я хочу отправить сообщение из моего главного окна в 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 вещь, которую мне не хватает чтобы это работало?