控制 iframe 将什么视为 window.top?

Awo*_*ing 5 html javascript iframe cross-domain

有一个 Web 应用程序通过将不同的 iframe 加载到自身中来工作。它提供了一些子 iframe 挂钩的代码。

子 iframe 访问 window.top 而不是 window.parent 并且不受我的控制。一切正常。

现在,我想将该应用程序作为 iframe 包含在另一个站点中。该应用程序不需要对该其他站点的任何“父”或“顶级”访问权限。但是,当该应用程序的子 iframe 执行 window.top 时,它们最终将“顶部”作为另一个站点,而不是应用程序。

理想情况下,我希望 window.top(在子 iframe 中)表示“该应用程序”,而不是“在 iframe 中包含该应用程序的其他站点”。

window.top 似乎是只读的。我有哪些选择?

编辑:我可以完全访问该应用程序和其他站点。只有该应用程序中的子框架是固定的。

作为可能的解决方案的示例:

  1. 让该应用程序将伪窗口对象插入到子框架中,.top 指的是该应用程序。
  2. 通过服务器端代理传递所有文件,该代理每次动态重写子框架的代码。

编辑 2:所以“解决方案”是将 .top 替换为 .parent,或者 .parent.parent 如果进一步嵌套在框架集中(有时是这种情况)。现在,当用户将他们的 HTML/js(它被 iframe)上传到该应用程序的 CMS 时,我可以做到这一点。然后代码永远不会一直上升到另一个站点。仍在寻找更多不涉及修改磁盘文件的选项。

Pab*_*123 0

你无法控制 window.top 是什么,它永远是顶部窗口。如果您有权访问要嵌入应用程序的页面的代码,那么您也许可以从应用程序向该页面传递信息(取决于您使用 window.top 的用途)。

如果您只需要从中读取一些信息或让它侦听某些事件,您可以使用postmessage将信息从应用程序框架中继到父框架(被检测为 的框架window.top,但否则您就不走运了)