2012-04-03 107 views
0

问题刷新的iframe的iframe中打开

如何使用JS来关闭弹出窗口,从一个iframe打开,然后重新加载IFRAME(不是整个页面)

什么是已经完成

在我从一个iframe中打开一个弹出窗口。 一旦这个弹出窗口到达某个页面,我想让这个弹出窗口重新加载IFRAME,然后关闭弹出窗口。

我有什么现在

<script type="text/javascript"> 
window.opener.parent.location.href="'.urldecode($_GET['return_url']).'"; 
window.close(); 
</script> 

现在

发生了什么弹出窗口关闭成功。整个页面发送到iframe网址,而不是仅仅把它发送到IFRAME ...

编辑: 我已经试过:

window.opener.location.href="'.urldecode($_GET['return_url']).'"; 

但是,这不自iframe或页面没有重新加载之后,通过这一行,并且它不关闭弹出窗口。在Chrome中,窗口关闭,但iframe /页面不会重新加载

原来,我得到的页面是不同的域(一个属于我们网站一部分的不同域)。但随后,为什么将这项工作

window.opener.parent.location.href="'.urldecode($_GET['return_url']).'"; 

,而不是

window.opener.location.href="'.urldecode($_GET['return_url']).'"; 

??????

回答

2

让我们在这里打破你的代码:

window.opener.parent.location.href="'.urldecode($_GET['return_url']).'"; 
  • window意味着当前弹出窗口的window对象。目前很好。
  • .opener表示打开此窗口的窗口对象,它将是您要重新加载的iframe。还好。
  • .parent表示iframe的父级,它是整个窗口。这是你的问题。

它应该是:

window.opener.location.href="'.urldecode($_GET['return_url']).'"; 
+0

这是我原本的,但有一个错误。 在Firefox中,当我使用 window.opener.location.href =“'。urldecode($ _ GET ['return_url'])。'”; 由于iframe或页面没有重新加载,它不会越过这条线,并且它不会关闭弹出窗口。 在Chrome中,窗口关闭,但iframe /页面不会重新加载 – 2012-04-03 13:42:56

+0

@NolanKnill听起来像是一个跨站点脚本错误。你的iframe和弹出窗口必须共享相同的'document.domain',否则你不能在它们之间执行javascript。 – jbabey 2012-04-03 13:49:42

+0

他们是相同的域,但不会window.opener.parent.location.href不工作,如果它是跨站点脚本? – 2012-04-03 13:51:31