Подтвердить что ты не робот

Использование postmessage для обновления родительского документа iframe

У меня есть greasemonkey script, который открывает iframe, содержащий форму из другого поддомена в качестве родительской.

Я хочу обновить родительскую страницу, когда iframe обновится после отправки формы

Я нахожусь в той точке, где я могу выполнить функцию, когда iframe обновляется, но я не могу заставить эту функцию влиять на родительский документ.

Я понимаю, что это связано с моделями безопасности браузера, и я читал об использовании postMessage для связи между двумя окнами, но я не могу понять, как отправить вызов перезагрузки родительскому устройству.

Любые советы о том, как это сделать, будут очень полезны

спасибо

4b9b3361

Ответ 1

Использование:

window.parent.postMessage('Hello Parent Frame!', '*');

Обратите внимание, что "*" указывает "любое происхождение". Вы должны заменить это целевым источником, если это возможно.

В вашем родительском фрейме вам нужно:

window.addEventListener('message', receiveMessage, false);

function receiveMessage(evt)
{
  if (evt.origin === 'http://my.iframe.org')
  {
    alert("got message: "+evt.data);
  }
}

Замените "my.iframe.org" на происхождение вашего iFrame. (Вы можете пропустить проверку происхождения, просто будьте очень осторожны, что вы делаете с данными, которые вы получаете).