2009-04-23 4 views

Répondre

13

Vous ne pouvez pas directement informé de la fermeture de la fenêtre, mais vous pouvez travailler lorsque la fenêtre de l'enfant a été fermé par l'inspection de la référence d'objet sur la fenêtre propriété closed retournée par window.open().

Voici un exemple qui affiche une alerte dans les 5 secondes de la fenêtre enfant étant fermé par vote la propriété closed:

var win = open('http://www.google.com'); 
var intervalId = setInterval(function() { 
     if (win.closed) { 
      clearInterval(intervalId); 
      alert('Window closed! Hoorah!'); 
     } 
    }, 5000); 
+0

Tu ne peux pas être informé directement parce que la fenêtre enfant est dans un domaine distinct, correct? – Adam

+0

C'est parce qu'il n'y a pas d'événement de navigateur approprié que vous pouvez utiliser pour travailler quand une fenêtre est fermée. –

+0

Woow..great man..a travaillé comme un charme. Merci beaucoup – BKM

-1

Une meilleure solution avec deux morceaux de code 1/dans le menu contextuel:

$(window).bind('unload', 
    function(){ 
    window.opener.PopupUnload(window) 
    }) 

2/dans le parent (fenêtre principale):

function PopupUnload(wnd){ 
setTimeout(function(){ // setTimeout is for IE 
    if(wnd.closed) 
    alert('You just killed me...') 
    },10) 
} 

avec ce code, aucune fonction appelée pour toujours (avec setInterval()) et que vous faites la différence entre proximité et actualisez pop-up (post/get)

(testé dans IE8 et FF3)

+1

Votre appel 'window.opener.PopupUnload' va échouer si les fenêtres parent et popup sont chargées à partir de différents domaines en raison de restrictions de script entre sites. –

Questions connexes