2013-05-16 2 views
5

Zum Beispiel, ich habe JavaScript wie folgt aus:Wie kann ich überprüfen, dass ein Fenster in JavaScript geschlossen wurde?

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

ich, ob die ‚testWindow‘ geschlossen ist und eine Funktion ausführen möchten überprüfen, ob es ist.

Ich habe dieses Problem gegoogelt aber bisher alles fand ich ist:

if (testWindow.close) {..} 

, die nur einmal ausgeführt wird. Ich frage mich also, ob ein Ereignis ausgelöst wird, wenn ein Fenster geschlossen wird? Vielen Dank.

+0

Sie sollten in der Lage sein, eine Methode onbeforeunload anzuhängen. https://developer.mozilla.org/en-US/docs/DOM/window.onbeforeunload – hank

+0

onunload ist wahrscheinlich besser .. :) – hank

+0

Danke, ich bin auch auf dieses Problem gestoßen, das einzige Problem ist, dass ich eine Datei hochlade Wenn also der Benutzer das Fenster schließt, bevor das Hochladen beendet ist, wird das onbeforeunload - Ereignis nicht ausgelöst (Da das gesamte Javascript erst geladen wird, wenn die Upload - Datei fertig ist?) – user1871516

Antwort

1

Ich würde ein Leuchtkasten statt eines window.open für eine Aufgabe wie diese verwenden. Meistens ist es besser, den Benutzer auf Ihrer Seite zu lassen, besonders wenn Sie etwas wie einen Upload machen.

Ich habe Colorbox verwendet, um ähnliche Aufgaben in der Vergangenheit zu erledigen. Hier ist ein Link http://www.jacklmoore.com/colorbox/

Dann würden Sie nur einen Rückruf in der geschlossenen Veranstaltung des colorbox befestigen

0

Eigentlich könnte man eine bessere Umsetzung findet in MDN best practices

Code-Snippet von 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. */ 
    }; 
} 

Auf diese Weise können Sie zuverlässig d Bestimmen Sie, ob das Fenster geschlossen ist oder nicht.

this helps

0

Für Datei-Upload, möchten Sie vielleicht einen unsichtbaren iframe Hack, um zu versuchen, anstatt ein eigenes Fenster. Oder ein Leuchtkasten wie von Matthew Bucci oben vorgeschlagen.

Verwandte Themen