2010-10-02 23 views
1

Ce code ouvrira go.com dans une nouvelle fenêtre:Comment savoir quand est fermé en pop-up javascript

<a href="javascript:void(0)" onClick="javascript:window.open('http://go.com','','status=yes,scrollbars=yes,toolbar=no,menubar=no,location=no ,width=300px,height=300px')">open</a> 

et je veux utiliser alert('closed!') en page principale, quand est fermé et pop-up, je ne peux pas modifier page pop-up pour une utilisation onunload="alert('closed!')", car la page popup est une page externe et je ne peux pas changer le code comme

var mywindow = window.open('http://go.com') ... 

Merci.

Répondre

0

Que diriez-vous de vérifier l'état de la fenêtre toutes les secondes pour voir si elle a été fermée? Exemple de code, non testé:

var mywindow= window.open(); 
checkmywindow(); 

function checkmywindow() 
{ 
    if(mywindow.closed) 
    { 
     //code when popup is closed 
    } 
    else 
    { 
     setTimeout("checkmywindow();", 1000); 
    } 
} 
1

Que diriez-vous au lieu de charger directement cette page externe dans la fenêtre, vous ouvrez une fenêtre « locale » avec un iframe contenant le contenu de la page externe? De cette façon, vous avez toujours assez de contrôle sur la fenêtre pour savoir quand elle est fermée.

Quelques inconvénients: la barre d'adresse n'affichera pas l'URL sur laquelle ils naviguent et elle peut également se casser si go.com a une sorte de code de suppression de trame.

Quelques exemples de code:

function openIFrameInWindow(url) { 
    var myWindow = window.open(""); 

    var iframe = document.createElement("iframe"); 
    iframe.src = url; 

    myWindow.document.body.appendChild(iframe); 

    myWindow.document.body.onbeforeunload = function() { alert("WINDOW CLOSED") }; 
} 

<a href="javascript:void(0)" onClick="javascript:openIFrameInWindow('http://go.com')">open</a> 
+0

obtenir une erreur « aucune interface » sur la ligne de appendChild dans IE8. – paulwhit

+0

Cela a résolu mon problème. Dommage que ce ne soit pas marqué comme correct ... –

0

Lorsque la fenêtre est fermée, vous pouvez INFORMER la fenêtre d'ouverture à ce sujet en utilisant la propriété window.opener.

Alors:

//pseudocode in pop-up window 
onClose() { 
window.opener.popUpClosed = true; 
} 

maintenant dans la page qui a ouvert la fenêtre, vous pouvez vérifier la valeur de la variable popUpClosed.

Plus d'informations sur la propriété ouvre ici: http://www.webreference.com/js/tutorial1/opener.html

+0

Il n'a pas accès à la fenêtre car c'est une page externe. –

+0

La propriété opener permet d'accéder à la page qui a ouvert la fenêtre. C'est ce que je pense qui est décrit dans la question – Andreas

+0

Oui .. mais seulement si vous avez accès à la page qui est en cours d'ouverture. Je doute qu'il a accès à modifier les scripts sur go.com. –