2011-04-13 21 views
1

我建立了各种网站一个书签,其功能基本上是这样的:来自其他域的iFrame如何摆脱自身?

  1. 用户导航到FOO.COM(外部网站不在我的控制)
  2. 用户点击浏览器了一个书签,抓住一些的iframe
  3. 用户内侧bar.com从foo.com并显示形式有关的信息提交内部bar.com其内部foo.com形式
  4. iframe的自败

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

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

回答

0

当你注入JS代码来在网站的页面上创建表单时,你可以让它轮询(在新创建的iframe之外的js)你的服务器知道何时删除iframe 。你可以使用各种方法来做到这一点,包括jsonp,长轮询,发布消息,片段标识符等。你不需要为此加载一个大型库 - 对bookmarklet来说越小越好。