100 votes

Ouvrir une popup et rafraîchir la page parentale à la fermeture de la popup

J'ai ouvert une fenêtre popup par window.open en JavaScript, je veux rafraîchir la page parentale lorsque je ferme cette fenêtre popup (événement onclose ?) comment puis-je faire ?

window.open("foo.html","windowName", "width=200,height=200,scrollbars=no");

242voto

Morrison Points 859

Vous pouvez accéder à la fenêtre parent en utilisant ' fenêtre.ouvreur ', donc, écrivez quelque chose comme ce qui suit dans la fenêtre enfant :

<script>
    window.onunload = refreshParent;
    function refreshParent() {
        window.opener.location.reload();
    }
</script>

37voto

Zuul Points 9891

La fenêtre pop-up n'a pas d'événement de fermeture que vous pouvez écouter.

D'autre part, il existe une propriété closed qui est mise à true lorsque la fenêtre est fermée.

Vous pouvez définir une minuterie pour vérifier cette propriété fermée et procéder comme suit :

var win = window.open('foo.html', 'windowName',"width=200,height=200,scrollbars=no");   
var timer = setInterval(function() {   
    if(win.closed) {  
        clearInterval(timer);  
        alert('closed');  
    }  
}, 1000); 

Voir ceci exemple de violon de travail !

14voto

Ray Cheng Points 3939

Sur votre page enfant, mettez ceci :

<script type="text/javascript">
    function refreshAndClose() {
        window.opener.location.reload(true);
        window.close();
    }
</script>

y

<body onbeforeunload="refreshAndClose();">

mais pour une bonne conception de l'interface utilisateur, vous devriez utiliser un Close button parce que c'est plus convivial. voir le code ci-dessous.

<script type="text/javascript">
    $(document).ready(function () {
        $('#btn').click(function () {
            window.opener.location.reload(true);
            window.close();
        });
    });
</script>

<input type='button' id='btn' value='Close' />

4voto

J'utilise ceci :

<script language='javascript'>
var t;
function doLoad() {
t = setTimeout("window.close()",1000);
}

</script>
<script type="text/javascript">
function refreshAndClose() {
    window.opener.location.reload(true);
    window.close();
}
</script>
<body onbeforeunload="refreshAndClose();" onLoad='doLoad()''>

lorsque la fenêtre se ferme, elle rafraîchit la fenêtre mère.

2voto

cranz Points 96

Window.open renverra une référence à la fenêtre nouvellement créée, à condition que l'URL ouverte soit conforme aux règles de l'UE. Politique de l'origine identique .

Cela devrait fonctionner :

function windowClose() {
    window.location.reload();
}

var foo = window.open("foo.html","windowName", "width=200,height=200,scrollbars=no");
foo.onbeforeunload= windowClose;​

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X