wake-up-neo.com

Popup öffnen und übergeordnetes Fenster beim Schließen aktualisieren

Ich habe ein Popup-Fenster von window.open in JavaScript geöffnet. Ich möchte die übergeordnete Seite aktualisieren, wenn ich dieses Popup-Fenster schließe. (Onclose-Ereignis?) Wie kann ich das tun?

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

Sie können über ' window.opener ' auf das übergeordnete Fenster zugreifen. Schreiben Sie also Folgendes in das untergeordnete Fenster:

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

Das Popup-Fenster hat kein nahes Ereignis, das Sie hören können.

Andererseits gibt es eine geschlossene Eigenschaft, die auf true gesetzt wird, wenn das Fenster geschlossen wird.

Sie können einen Timer einstellen, um die geschlossene Eigenschaft zu überprüfen und folgendermaßen zu tun:

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); 

Siehe dieses Fiddle Beispiel !

31
Zuul

fügen Sie auf Ihrer Kinderseite diese ein:

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

und

<body onbeforeunload="refreshAndClose();">

für ein gutes Design der Benutzeroberfläche sollten Sie jedoch ein Close button verwenden, da es benutzerfreundlicher ist. siehe Code unten.

<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 gibt einen Verweis auf das neu erstellte Fenster zurück, sofern die geöffnete URL der Same Origin Policy entspricht. 

Das sollte funktionieren:

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

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

Ich benutze das: 

<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()''>

wenn das Fenster geschlossen wird, wird das übergeordnete Fenster aktualisiert. 

3

Wenn Ihre App in einem HTML5-fähigen Browser ausgeführt wird. Sie können postMessage verwenden. Das dort gegebene Beispiel ist Ihrem sehr ähnlich. 

1
Chris Li

Versuche dies

        self.opener.location.reload(); 

Öffnen Sie das übergeordnete Fenster eines aktuellen Fensters und laden Sie den Speicherort erneut.

1
nmkyuppie

In meinem Fall öffnete ich ein Popup-Fenster, wenn Sie auf die Link-Schaltfläche in der übergeordneten Seite klicken 

window.opener.location.reload();

in untergeordnetem Fenster verursacht erneutes Öffnen des untergeordneten Fensters (möglicherweise aufgrund von "View State", denke ich. Korrigieren Sie mich, wenn ich falsch liege) ... Also entschied ich mich, die Seite nicht in "parent" zu laden und die Seite erneut zu laden, indem Sie ihr die gleiche URL zuweisen .

Um das Öffnen des Popup-Fensters nach dem Schließen des Popup-Fensters zu vermeiden, kann dies hilfreich sein.

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

Sie können den folgenden Code auf der übergeordneten Seite verwenden.

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

Sie erreichen die Hauptseite mit dem übergeordneten Befehl (übergeordnetes Fenster) nach dem Schritt können Sie alles machen ...

    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

Mit folgendem Code kann das übergeordnete Fenster nach dem Schließen aktualisiert werden:

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