2010-06-06 58 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