использование postmessage для обновления родительского документа iframe - PullRequest
20 голосов
/ 27 сентября 2010

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

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

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

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

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

спасибо

1 Ответ

50 голосов
/ 14 января 2011

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

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.(Вы можете пропустить проверку происхождения, просто будьте очень осторожны в том, что вы делаете с данными, которые вы получаете).

...