2011-04-13 8 views
19

J'ai une page qui ouvre une fenêtre enfant, à partir d'un parent.Fermer la fenêtre enfant, rediriger la fenêtre parent

Après que l'utilisateur a fait quelque chose dans la fenêtre enfant, j'ai besoin de fermer la fenêtre enfant et de rediriger sa fenêtre parent vers une page, en cliquant sur un bouton dans la fenêtre enfant.

Des idées?

Répondre

24

de l'enfant:

opener.location.href = '/redirect'; 
close(); 
+0

mais IE affiche popup bloqué :(Toute solution fonctionnant dans IE aussi? – Binod

+0

@Binod - IE bloquant un popup n'a rien à voir avec cette question. S'il vous plaît poser une nouvelle question si vous rencontrez des problèmes, celui-ci a presque 3 ans –

+0

Le problème était la même politique d'origine Si les fenêtres ne sont pas de la même origine, IE considère cette redirection comme une fenêtre contextuelle – Binod

16

La clé est d'utiliser window.opener pour accéder à la fenêtre parent:

<script> 
    window.opener.location = '/redirect.html'; 
    window.close(); 
</script> 
+0

vous voulez retourner ces lignes, pensez-y :) –

+1

@cwolves: Cela fonctionne dans les deux sens. Vous pouvez toujours accéder aux propriétés de l'objet window même après sa fermeture. –

+0

Ce n'est pas garanti. Certes, cela fonctionnera probablement toujours dans ce scénario, mais le navigateur va commencer à démolir la fenêtre et finira par tuer l'exécution JS mid-statement. Si vous aviez du code à long terme après 'window.close()', il y a une chance que cela ne finisse pas. Il y a aussi une chance qu'un navigateur dise "pas de code autorisé à courir après' window.close() '" et juste le tuer immédiatement –

1

S'il vous plaît essayer ci-dessous:

window.opener.location.reload(); 
close(); 
  1. window.opener.location.reload(); rechargera la fenêtre parent.
  2. close() fermera la fenêtre enfant

Il fonctionne très bien pour moi.

Questions connexes