2013-05-16 1 views
5

Ad esempio, ho JavaScript così:Come posso verificare che una finestra sia stata chiusa in JavaScript?

windowHandle = window.open('http://www.irt.org/','testWindow','height=200,width=200'); 

Vorrei verificare se il 'testWindow' è chiusa ed eseguire una funzione se lo è.

Ho Googled questo problema, ma finora tutto quello che ho trovato è:

if (testWindow.close) {..} 

che viene eseguito solo una volta. Quindi mi chiedo se c'è un evento innescato quando una finestra è chiusa? Grazie.

+0

Dovresti essere in grado di allegare un metodo a onbeforeunload. https://developer.mozilla.org/en-US/docs/DOM/window.onbeforeunload – hank

+0

onunload è probabilmente meglio .. :) – hank

+0

Grazie, ho anche inventato questo, l'unico problema è che sto caricando qualche file , quindi se l'utente chiude la finestra prima del caricamento, l'evento onbeforeunload non si attiva (Poiché tutto il javascript viene caricato solo quando il file di caricamento è stato completato?) – user1871516

risposta

1

Vorrei utilizzare una lightbox anziché una window.open per un'attività come questa. La maggior parte delle volte sarebbe meglio mantenere l'utente incorporato nel tuo sito, specialmente se stai facendo qualcosa come un caricamento.

Ho usato colorbox per svolgere attività simili in passato. Ecco un link http://www.jacklmoore.com/colorbox/

Poi si sarebbe solo attaccare un callback per l'evento di chiusura della colorbox

0

In realtà si potrebbe trovare una migliore attuazione in MDN best practices

snippet di codice MDN

var windowObjectReference = null; // global variable 

function openFFPromotionPopup() { 
    if(windowObjectReference == null || windowObjectReference.closed) 
    /* if the pointer to the window object in memory does not exist 
    or if such pointer exists but the window was closed */ 

    { 
    windowObjectReference = window.open("http://www.spreadfirefox.com/", 
    "PromoteFirefoxWindowName", "resizable,scrollbars,status"); 
    /* then create it. The new window will be created and 
     will be brought on top of any other window. */ 
    } 
    else 
    { 
    windowObjectReference.focus(); 
    /* else the window reference must exist and the window 
     is not closed; therefore, we can bring it back on top of any other 
     window with the focus() method. There would be no need to re-create 
     the window or to reload the referenced resource. */ 
    }; 
} 

In questo modo è possibile d etermine se la finestra è chiusa o meno.

Spero che questo aiuti

0

Per upload di file, si potrebbe desiderare di provare un trucco iframe invisibile, piuttosto che una finestra separata. O un lightbox come suggerito da Matthew Bucci sopra.