2012-04-03 104 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