JavaScript:从iframe关闭窗口

问题描述:

我有一个页面P1从站点S1加载,其中包含一个iframe。该iframe从另一个站点S2加载页面P2。在某个时候,P2想要关闭浏览器窗口,其中包含从S1加载的P1。当然,由于P2是从另一个站点加载的,因此不能只执行parent.close()。JavaScript:从iframe关闭窗口

我可以完全控制P1和P2,所以我可以根据需要向P1和P2添加JavaScript代码。 关于如何解决这个问题的建议?

恐怕是不可能的。由于安全问题,严格禁止加载到不同站点的iframe中的JavaScript,以及它所呈现的JavaScript。

然而,如果在iframe指向同一个网站,你可以得到它喜欢:

<iframe name = "frame1" src = "http://yoursite"> 
</iframe> 

<script type = "text/javascript"> 
    alert(window.frames["frame1"].document); 
</script> 

如果它们来自同一个域,您可以修改安全限制,允许子之间修改域。

set document.domain =“domain.com”; //在这两个页面上,他们被允许修改彼此。

它可能会工作,只是将它们设置为一个虚假的域名,还没有尝试过,或只是简单地“.com”什么的。

+0

document.domain只允许您从当前域“向上移动”。例如。从“sub.domain.example.com”或“sub.example.com”改为“example.com”。但是,您不能将其设置为'.com'。此外,您只能设置一次该值。 – Josh 2008-11-13 13:42:03

看起来像this guy在iframe之间获得了跨域JavaScript工作。

您可以使用Flash来执行此操作。通过带有_top目标的URLRequest将用户发送到您控制的新*页面,并让该页面包含执行window.close()的JavaScript。