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

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

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

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

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

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

Спасибо

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

 rlv-dan09 янв. 2015 г., 08:04
Если у вас есть несколько iframes друг в друге, вы можете заменитьродитель сТоп чтобы добраться до самой верхней страницы:window.top.postMessage('Hello Parent Frame!', '*');
 Matthew Lock17 окт. 2013 г., 05:34
Обратите внимание, что IE не поддерживает addEventListener, поэтому используйте jQuery bind или someting

Ваш ответ на вопрос