【问题标题】:How can an iFrame from another domain get rid of itself?来自另一个域的 iFrame 如何摆脱自身?
【发布时间】:2011-04-13 03:07:45
【问题描述】:

我正在为各种网站构建一个书签,其功能基本上是这样的:

  1. 用户导航到 foo.com(不受我控制的外部网站)
  2. 用户在其浏览器上单击一个小书签,该小书签从 foo.com 获取一些信息并将其显示在 iframe 内 bar.com 中的表单上
  3. 用户在 foo.com 内的 bar.com 内提交表单
  4. iframe 消失

问题是让 iFrame 自行删除。由于我无法访问另一个域中的父域内的函数,因此我无法创建自定义函数 parent.removeIFrame(),甚至无法执行 window.top.location.reload()。我尝试了很多技术,但都因为跨域脚本而失败。

我解决它的方法是将 top.location.href 更改为我在 bar.com/back.html 构建的自定义页面,它所做的只是发送一个“history.back()”命令在原始页面上反弹用户。虽然很有创意,但我认为这不是非常优雅的解决方案。有没有更好的办法?

【问题讨论】:

    标签: javascript iframe cross-domain


    【解决方案1】:

    您可以尝试跨域消息传递的片段标识符。它有一个 YUI 库:http://www.julienlecomte.net/blog/2007/11/31/

    【讨论】:

      【解决方案2】:

      当您注入 JS 代码以在网站页面上创建表单时,您可以让它轮询(新创建的 iframe 之外的 js)您的服务器以了解何时删除 iframe。您可以使用各种方法来执行此操作,包括 jsonp、长轮询、发布消息、片段标识符等。您不需要为此加载大型库 - 小书签越小越好。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-10-18
        • 2011-01-02
        • 2015-10-01
        • 1970-01-01
        • 2018-04-10
        • 2010-09-25
        • 1970-01-01
        相关资源
        最近更新 更多