web-dev-qa-db-fra.com

Ouvrir la fenêtre contextuelle et actualiser la page parent à la fermeture de la fenêtre contextuelle

J'ai ouvert une fenêtre popup par window.open en JavaScript, je veux actualiser la page parente lorsque je ferme cette fenêtre popup.

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

Vous pouvez accéder à la fenêtre parent en utilisant ' window.opener ', écrivez quelque chose comme ceci dans la fenêtre enfant:

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

La fenêtre contextuelle n'a aucun événement de fermeture que vous pouvez écouter.

D'autre part, une propriété fermée est définie sur true lorsque la fenêtre est fermée.

Vous pouvez définir une minuterie pour vérifier cette propriété fermée et le faire comme ceci:

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 cet exemple de travail Fiddle !

31
Zuul

sur votre page enfant, mettez ceci:

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

et

<body onbeforeunload="refreshAndClose();">

mais comme une bonne interface utilisateur, vous devriez utiliser une variable button car elle est plus conviviale. 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' />
12
Ray Cheng

window.open retournera une référence à la fenêtre nouvellement créée, à condition que l'URL ouverte soit conforme à Même politique d'origine

Cela devrait fonctionner:

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

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

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, la fenêtre parent est rafraîchie. 

3
Patrick Kershner

Si votre application s'exécute sur un navigateur compatible HTML5. Vous pouvez utiliser postMessage . L'exemple donné ici est assez similaire au vôtre. 

1
Chris Li

Essaye ça

        self.opener.location.reload(); 

Ouvrez le parent d'une fenêtre en cours et rechargez l'emplacement.

1
nmkyuppie

Dans mon cas, j’ai ouvert une fenêtre contextuelle en cliquant sur le lien dans la page parente . Pour actualiser le parent lors de la fermeture de l’enfant à l’aide de 

window.opener.location.reload();

dans la fenêtre enfant a causé la réouverture de la fenêtre enfant (peut-être à cause de l'état d'affichage, je suppose. Corrigez-moi si je me trompe) . J'ai donc décidé de ne pas recharger la page dans parent et de charger à nouveau la page en lui affectant la même URL. .

Pour éviter que la fenêtre contextuelle ne s'ouvre à nouveau après la fermeture de la fenêtre contextuelle, cela pourrait aider,

window.onunload = function(){
    window.opener.location = window.opener.location;};
1
Jitendra Sawant

Vous pouvez utiliser le code ci-dessous dans la page parent.

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

Vous pouvez accéder à la page principale avec la commande parent (le parent est la fenêtre) après l'étape, vous pouvez tout faire.

    function funcx() {
        var result = confirm('bla bla bla.!');
        if(result)
            //parent.location.assign("http://localhost:58250/Ekocc/" + document.getElementById('hdnLink').value + "");
            parent.location.assign("http://blabla.com/" + document.getElementById('hdnLink').value + "");
    } 
0
dewelloper

Le code suivant parviendra à actualiser la fenêtre parent après la fermeture:

function ManageQB_PopUp() {
            $(document).ready(function () {
                window.close();
            });
            window.onunload = function () {
                var win = window.opener;
                if (!win.closed) {
                    window.opener.location.reload();
                }
            };
        }
0
UJS