2010-06-06 59 views
0

我试图对此编码几个小时,但仍然无法完成。它一直告诉我“权限被拒绝”。弹出窗口中的JavaScript访问父窗口

这是我正在努力完成的。这很难解释,请按照下面的例子。

例如。 domain111.com和domain222.com。 当我在domain111.com上点击弹出链接时,它会弹出domain111.com/popup.html,然后将它重定向到domain222.com。在这个domain222.com上,它会重定向到几页,然后重定向到domain111.com并返回结果。我想将结果从domain111.com发送到domain111.com。

该过程如下所示。 Domain111-popup到 - > Domain111-redirect - > Domain222-redirect xxx Domain222 pages然后重定向到 - > - Domain111 ---发送到父窗口 - > Domain11

这是我的代码。

文件名1.hml上domain111.com

<script type="text/javascript"> 
    function IamParent() { 
     alert('I am the parent of this window') 
    } 
    function PopUP() { 
     window.open("http://domain222.com/2.htm", 'ALpop').focus(); 
    } 

</script> 
<body> 
    <a href="#void(0);" onclick="PopUP();" >Click</a> 
</body> 

文件名2.HTML上domain222.com

<head> 
    <title></title> 
    <meta http-equiv="refresh" content="1;url=http://domain111.com/3.htm?Result=Yes" /> 
</head> 

名2.htm上domain111.com

<script type="text/javascript"> 
    parent.IamParent(); //execute the function from the same domain111.com/1.htm 
</script> 

请不要建议AJAX或网络请求,因为它不适用于这种情况。

感谢您的阅读。

回答

1

由于JavaScript引擎中的安全限制要求,其他域中的父窗口无法访问。这适用于所有浏览器。这是一个跨站点脚本攻击预防,无法禁用。

+0

首先,它弹出到同一个域,它重定向到另一个域,并且该域返回到原始域。所以最后一步和第一步是在同一个域中。 – user359472 2010-06-06 02:22:39

+0

@ user359472:这是禁用整个链的中间步骤。安全引擎现在只允许它。我从来没有见过这样的合理解决方法。在我的公司,我们最终执行了一个DNS别名,以允许第二个域名被重命名,以便它可以工作。虽然这有点冒险。 – 2010-06-06 02:25:36

+0

由于性能问题,我真的不希望父窗口使用Ajax来检查状态。嗯,我想我必须在数据库中存储一些id,并在鼠标重新进入页面时检查它。这可能是目前最好的解决方案。 谢谢你们 – user359472 2010-06-06 02:35:59