2008-11-13 98 views
0

我有一個頁面P1從站點S1加載,其中包含一個iframe。該iframe從另一個站點S2加載頁面P2。在某個時候,P2想要關閉瀏覽器窗口,其中包含從S1加載的P1。當然,由於P2是從另一個站點加載的,因此不能只執行parent.close()。JavaScript:從iframe關閉窗口

我可以完全控制P1和P2,所以我可以根據需要向P1和P2添加JavaScript代碼。 關於如何解決這個問題的建議?

回答

1

恐怕是不可能的。由於安全問題,嚴格禁止加載到不同站點的iframe中的JavaScript,以及它所呈現的JavaScript。

然而,如果在iframe指向同一個網站,你可以得到它喜歡:

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

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

如果它們來自同一個域,您可以修改安全限制,允許子之間修改域。

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

0

看起來像this guy在iframe之間獲得了跨域JavaScript工作。

0

您可以使用Flash來執行此操作。通過帶有_top目標的URLRequest將用戶發送到您控制的新頂級頁面,並讓該頁面包含執行window.close()的JavaScript。