Domanda JS: ascolta quando la finestra secondaria è chiusa


Sto aprendo la finestra figlio per Facebook condividendo in questo modo:

window.open(sharingUrl,'','toolbar=0,status=0,width=626,height=436');

La finestra si chiude automaticamente quando l'utente fa clic su condividi o chiudi ... C'è un modo per aggiungere ascoltatori a questi eventi?


44
2018-04-19 05:59


origine


risposte:


Se si memorizza un riferimento alla finestra secondaria quando si chiama window.open(), quindi puoi sondare usando setInterval() per vedere se la finestra è ancora aperta usando il window.closed proprietà. L'esempio seguente controlla due volte al secondo.

var child = window.open('http://google.com','','toolbar=0,status=0,width=626,height=436');
var timer = setInterval(checkChild, 500);

function checkChild() {
    if (child.closed) {
        alert("Child window closed");   
        clearInterval(timer);
    }
}

Nota agli altri: Se ti trovi in ​​una situazione in cui hai il controllo dell'HTML nella finestra secondaria, puoi utilizzare onbeforeunload evento e avvisa la finestra genitore.


102
2018-04-19 06:26



Per riferimenti futuri, mi piacerebbe condividere un'altra soluzione che non richiede setInterval :

var child = window.open('http://google.com','','toolbar=0,status=0,width=626,height=436');
child.onunload = function(){ console.log('Child window closed'); };

1
2018-02-10 21:39



Questo funzionerà bene

   <html>
<head>
<title>Detecting browser close in IE</title>
<script type="text/javascript">

window.onbeforeunload = function(){ myUnloadEvent(); }
function myUnloadEvent() {
    alert ('You can have Ur Logic Here ,');

}

</script>
</head>
</script>
</head>
<body >
<h1>Close the Window now</h1>
</body>
</html>

-2
2018-04-19 07:39