74 votes

JS: écouter lorsque la fenêtre enfant est fermée

J'ouvre une fenêtre enfant pour partager Facebook de cette façon:

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

La fenêtre se ferme automatiquement lorsque l'utilisateur clique sur partager ou fermer ... Existe-t-il un moyen d'ajouter des écouteurs à ces événements?

158voto

jessegavin Points 20854

Si vous stocker une référence à la fenêtre enfant lorsque vous appelez window.open(), alors vous pouvez interroger l'aide d' setInterval() pour voir si la fenêtre est toujours ouverte à l'aide de l' window.closed de la propriété. L'exemple ci-dessous vérifie deux fois par seconde.

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

Note pour les autres: Si jamais vous vous trouvez dans une situation où vous avez le contrôle sur le code html dans la fenêtre enfant, vous pourriez faire usage de la onbeforeunload événement et d'alerte de la fenêtre parent.

-2voto

Maddy Points 1207

Cela fonctionnera bien

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

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