使用postmessage刷新iframe的父文档

使用postmessage刷新iframe的父文档,iframe,cross-domain,parent,Iframe,Cross Domain,Parent,我有一个greasemonkey脚本,它打开一个iframe,其中包含来自不同子域的表单作为父页面。 我想在表单提交后iframe刷新时刷新父页面 当iframe刷新时,我可以执行一个函数,但我无法使该函数影响父文档。 我知道这是由于浏览器的安全模型,我一直在阅读使用postMessage在两个窗口之间通信的相关内容,但我似乎不知道如何使用它向父窗口发送重新加载调用。 任何关于如何做到这一点的建议都会非常有用 谢谢使用: window.parent.postMessage('Hello Pare

我有一个greasemonkey脚本,它打开一个iframe,其中包含来自不同子域的表单作为父页面。 我想在表单提交后iframe刷新时刷新父页面 当iframe刷新时,我可以执行一个函数,但我无法使该函数影响父文档。 我知道这是由于浏览器的安全模型,我一直在阅读使用postMessage在两个窗口之间通信的相关内容,但我似乎不知道如何使用它向父窗口发送重新加载调用。 任何关于如何做到这一点的建议都会非常有用 谢谢

使用:

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的来源。您可以跳过原点验证,但要非常小心处理所获得的数据。

请注意,IE不支持'addEventListener',因此请使用jQuery bind或其他方法。如果您有多个iFrame在彼此内部,您可以用top替换parent,以到达最顶端的页面:window.top.postMessage'Hello parent Frame!','*;