控制iframe看到的是什么window.top?

时间:2017-02-10 16:33:11

标签: javascript html iframe cross-domain

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

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

现在,我希望将该应用程序作为iframe包含在另一个站点中。该应用程序不需要任何父母"或" top"访问此其他网站。但是,当该应用程序的子iframe执行window.top时,它们会以" top"是另一个网站,而不是应用程序。

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

看来window.top是只读的。我有什么选择?

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

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

  1. 让该应用程序将假窗口对象插入子框架中,并使用.top引用该应用程序。
  2. 通过服务器端代理传递所有文件,每次都动态重写子帧代码。
  3. 编辑2:所以"解决方案"如果进一步嵌套在框架集中(有时是这种情况),则用.parent或.parent.parent替换.top。目前,我可以在用户将其HTML / js(获取iframed)上传到该应用程序的CMS时执行此操作。然后代码永远不会一直上升到其他站点。仍在寻找更多不涉及修改磁盘上文件的选项。

1 个答案:

答案 0 :(得分:0)

您无法控制window.top,它始终是顶部窗口。如果您可以访问要嵌入应用程序的页面代码,那么您可以从应用程序中将信息传递给它(取决于您使用的是window.top的内容)。

如果您只是需要从中读取一些信息或让它监听某些事件,您可以使用postmessage将信息从应用程序框架中继到父框架(被检测为{ {1}},但你运气不好