2013-05-16 17 views
5

Na przykład, mam JavaScript tak:Jak mogę sprawdzić, czy okno zostało zamknięte w JavaScript?

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

Chciałbym sprawdzić, czy „testWindow” jest zamknięta i uruchomić funkcję, jeśli jest.

mam Googled ten problem, ale do tej pory wszystko znalazłem to:

if (testWindow.close) {..} 

który prowadzony jest tylko raz. Zastanawiam się więc, czy zdarzenie wywołane jest, gdy okno jest zamknięte? Dzięki.

+0

Powinieneś być w stanie dołączyć metodę do onbeforeunload. https://developer.mozilla.org/en-US/docs/DOM/window.onbeforeunload – hank

+0

onunload jest prawdopodobnie lepszy .. :) – hank

+0

Dzięki, ja też wymyśliłem to, jedynym problemem jest załadowanie pliku , więc jeśli użytkownik zamknie okno przed zakończeniem wysyłania, zdarzenie onbeforeunload nie zostanie wywołane (Ponieważ cały javascript jest ładowany tylko po wysłaniu pliku?) – user1871516

Odpowiedz

1

Chciałbym użyć lightbox zamiast window.open do zadania takiego jak to. W większości przypadków lepiej byłoby umieścić użytkownika w swojej witrynie, zwłaszcza jeśli robisz coś takiego jak przesyłanie.

Użyłem colorbox do wykonywania podobnych zadań w przeszłości. Oto link http://www.jacklmoore.com/colorbox/

Wtedy po prostu dołączyć wywołania zwrotnego do zamkniętego przypadku ColorBox

0

Właściwie można było znaleźć lepszego wdrażania w MDN best practices

Fragment kodu z 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. */ 
    }; 
} 

W ten sposób można niezawodnie Określa, czy okno jest zamknięte, czy nie.

Nadzieja to pomaga

0

do przesyłania plików, może chcesz spróbować niewidzialny iframe hack, zamiast osobnym oknie. Lub lightbox, jak sugeruje powyższy Matthew Bucci.

Powiązane problemy