iframe - 使用 postmessage 刷新 iframe 的父文档

标签 iframe cross-domain parent

我有一个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 的来源。 (您可以跳过来源验证,只需非常小心您对获得的数据所做的操作)。

关于iframe - 使用 postmessage 刷新 iframe 的父文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3800309/

相关文章:

具有多个子域的 Javascript window.opener.postMessage 跨源

jquery - 使用jquery查找父div的id来引用var

javascript - 从 Iframe 创建一个新的 chrome 选项卡/窗口

ajax - 跨域ajax不适用于移动Safari中的重定向

node.js - 当 Origin 包含端口号时不允许 CORS

c# - 将窗体设置为父级抛出异常 "Top-level control cannot be added to a control"

jQuery:仅在父链接上防止默认

javascript - 在 Vimeo 视频嵌入选项中启用背景为真时播放/暂停

javascript - 如何防止后退按钮在 iframe 上工作?

html - 背景比 iframe 大