2012-04-03 18 views
0

Die FrageReload iframe von Pop-up-Fenster aus iframe geöffnet

Wie kann ich JS verwenden, um ein Pop-up, von einem Iframe geöffnet zu schließen, und dann die iframe nachladen (nicht die ganze Seite)

Was getan worden ist

ich ein Pop-up-Fenster aus einem iframe geöffnet haben. Sobald dieses Pop-up-Fenster eine bestimmte Seite erreicht, möchte ich dieses Popup-Fenster den IFRAME erneut laden und dann das Popup-Fenster schließen.

Was ich habe jetzt

<script type="text/javascript"> 
window.opener.parent.location.href="'.urldecode($_GET['return_url']).'"; 
window.close(); 
</script> 

Was jetzt schließt geschieht

Das Pop-up-Fenster erfolgreich. Die ganze Seite wird an die Iframe-URL gesendet, statt nur an die iframe Senden ...

edit: Was ich versucht habe:

window.opener.location.href="'.urldecode($_GET['return_url']).'"; 

Aber es funktioniert nicht über diese Zeile hinausgehen, da der Iframe oder die Seite nicht neu geladen wird und das Popup-Fenster nicht geschlossen wird. In Chrome wird das Fenster geschlossen, aber der Iframe/die Seite wird nicht neu geladen

Stellt sich heraus, dass die Seite, die ich erhalte, eine andere Domäne ist (eine andere Domäne, die Teil unserer Website ist). Aber warum würde diese Arbeit

window.opener.parent.location.href="'.urldecode($_GET['return_url']).'"; 

und nicht

window.opener.location.href="'.urldecode($_GET['return_url']).'"; 

??????

Antwort

2

der Code Lassen Sie hier brechen:

window.opener.parent.location.href="'.urldecode($_GET['return_url']).'"; 
  • window bedeutet, dass die aktuelle Pop-up-window Objekts Fenster. Gut soweit.
  • .opener bedeutet das Fensterobjekt, das dieses Fenster geöffnet hat. Dies wäre der Iframe, den Sie neu laden möchten. Immer noch gut.
  • .parent bedeutet das übergeordnete Element des iframe, das das gesamte Fenster darstellt. Das ist Dein Problem.

es sein sollte:

window.opener.location.href="'.urldecode($_GET['return_url']).'"; 
+0

Dies ist, was ich ursprünglich hatte, aber es ist ein Fehler aufgetreten. In Firefox, wenn ich window.opener.location.href = "'. Urldecode ($ _ GET [' return_url ']).'"; Es kommt nicht über diese Zeile hinaus, da der Iframe oder die Seite nicht neu geladen wird und das Popup-Fenster nicht geschlossen wird. In Chrome wird das Fenster geschlossen, aber der iFrame/die Seite wird nicht neu geladen. –

+0

@NolanKnill klingt wie ein Cross-Site-Scripting-Fehler. Ihr iframe und das Popup-Fenster müssen die gleiche 'document.domain' teilen oder Sie können Javascript nicht dazwischen ausführen. – jbabey

+0

Sie sind von der gleichen Domäne, aber würde window.opener.parent.location.href nicht funktionieren, wenn es Cross-Site-Scripting wäre? –