2008-10-21 15 views
5

Otwieram nowe okno przeglądarki z mojej strony dla niektórych członków. Jednak niektórzy mogą go później zamknąć lub być może początkowo nie udało się go otworzyć.Jak mogę potwierdzić, że okno przeglądarki jest otwarte, z Javascriptem?

Czy istnieje fragment dość prostego skryptu Javascript, który można uruchomić na każdej stronie, aby potwierdzić, czy inne okno przeglądarki jest otwarte, a jeśli nie, podać link do ponownego otwarcia go?

[wyjaśnienie:] Kod sprawdzić to okno jest otwarte będzie działać na innych stronach - nie tylko w tym samym oknie i adres URL, który go otworzył. Wyobraź sobie, że użytkownik loguje się, okno (próbuje) otworzyć, a następnie surfuje w tej samej karcie/oknie (lub innych) przez jakiś czas, zanim zamkną drugie okno (lub nigdy nie zostanie otwarte) - Chcę być w stanie zauważenie, że okno zostało zamknięte po pewnym czasie po pierwszej próbie otwarcia/po zamknięciu, więc nie jestem pewien, czy sprawdzenie powrotu javascripta z window.open() (z popup_window_handle.closed) jest łatwe w użyciu, a nawet możliwe .

Odpowiedz

4

Ten excellent, comprehensive article("Prawie pełna kontrola okna wyskakujące") powinien odpowiedzieć na wszystkie pytania dotyczące okien popup javascript.

„JavaScript 1.1 wprowadzono także okno zamknięty nieruchomości. Wykorzystując tę ​​właściwość, jest możliwe, aby wykryć, czy okno zostało otwarte, a następnie zamknięte. Możemy to wykorzystać do załadowania strony bezpośrednio do okna otwieracza jeżeli nadal otwarte dla JavaScript 1.1 włączony przeglądarek:”

<script language="JavaScript"><!-- 
function open_main(page) { 
    window_handle = window.open(page,'main'); 
    return false; 
} 
//--></script> 

<script language="JavaScript1.1"><!-- 
function open_main(page) { 
    if (opener && !opener.closed) { 
     opener.location.href = page; 
    } 
    else { 
     window_handle = window.open(page,'main'); 
    } 
    return false; 
} 
//--></script> 

<a href="example.htm" onClick="return open_main('example.htm')">example.htm</a> 

Dodatek: można uzyskać okno uchwyt z powrotem w inną stronę, odwołując się do nazwy popup w ten sposób:

window_handle = window.open(page,'myPopupName'); 

Sądzę, że w twoim przypadku powinieneś pomyśleć o konsekwentnym sposobie tworzenia wszystkich nazw okien wyskakujących w całej aplikacji.

1
var myWin = window.open(...); 

if (myWin.closed) 
{ 
    myWin = window.open(...); 
} 
+0

Jak długo będzie dostępna zmienna "myWin"? Tylko podczas gdy jest na tej samej stronie? –

+0

@ Topbit: Tak, ale możesz odzyskać uchwyt okna, odwołując się do nazwy popup w następujący sposób: window_handle = window.open (page, 'myPopupName'); - Naprawdę polecam lekturę połączonego artykułu w mojej odpowiedzi (splattne). – splattne

0

Nie ma uniwersalnego sposobu sprawdzenia, ponieważ każdy bloker wyskakujących okienek ma inne zachowanie. Na przykład, Opera nie wyświetli pop-upu, ale wdowa.zamknie zwróci wartość false, ponieważ za sceną Opera zachowuje kopię w tle zablokowanego okna, na wszelki wypadek, gdyby użytkownik chciał to zobaczyć.

Powiązane problemy