【问题标题】:Reading parent document from iFrame and changing parent从 iFrame 读取父文档并更改父文档
【发布时间】:2024-01-21 09:35:01
【问题描述】:

我正在尝试编写一个 JavaScript 应用程序,它将在页面的 iFrame 中加载一个按钮。此应用程序将读取父文档并删除所有图像,应用最小样式并使用这个新标记的页面重新加载父文档。

我遇到的问题是从 iFrame 读取和写入父文档。有谁知道实现这一目标的方法?我已经阅读了一些关于跨域消息传递的信息,但不确定替代方案以及哪种方案最好。

提前致谢。

【问题讨论】:

  • 如果页面位于一个域中,并且 iframe 指向另一个域,则无法通过 iframe 进行操作。

标签: javascript ajax iframe cross-domain


【解决方案1】:

您可以使用 parent 或使用始终指向最外层文档的 top 变量来引用父级。

  • parent == 父窗口
  • 顶部 == 最外面的窗口

所以为了访问父窗口中的第一个 div

var d = parent.document.getElementsByTagName("div")[0];

但正如评论中已经指出的那样,外部文档和 iframe 中的文档都需要来自同一个域,否则出于安全原因您将被阻止。

【讨论】:

  • 感谢您的回答。我使用了 HTML5 跨域消息传递功能,如下所述:dev.w3.org/html5/postmsg/#introduction
  • 这看起来不正确,parent 和 top 指向窗口,而不是文档。
  • 请注意,它是document.getElementsByTagName。它有效!
最近更新 更多