2011-07-27 40 views
12

Mam stronę nadrzędną i podrzędną. W tagu strony podrzędnej mam poniższy kod.onunload nie działa w przeglądarce Chrome i safari

<body onunload="window.g_autoclosed=true;if(window.opener&&window.opener.NavModelessClose){window.opener.NavModelessClose(window,false);}"> 

po kliknięciu przycisku na stronie nadrzędnej strona podrzędna powinna zostać zamknięta i wywołać zdarzenie onunload.

Zdarzenie rozładowania podnosi się poprawnie w IE i FF. Ale nie podnosi się w chromie i safari.

Proszę, pomóż mi.

+0

możliwe duplikat http://stackoverflow.com/questions/803887/can-i-pop-up-a-confirmation-dialog-when-the-user-is-closing -the-window-in-safari –

Odpowiedz

12

Nowoczesne przeglądarki WebKit niekoniecznie muszą uruchamiać zdarzenie unload w momencie, gdy strona jest ukryta. Odbywa się to w celu umożliwienia lepszego buforowania.

Możesz rozważyć zastąpienie użycia unload wydarzeniem pagehide.

Zobacz this blog post for an in-depth discussion.

+0

onunload abd onpagehide oba nie działają –

5

Może warto spróbować wydarzenie onbeforeunload?

1

tak onbeforeunload przymocowany do okna (lub wewnętrznej stronie okna dziecko) powinien zrobić to

7

Unload działa w nowoczesnych przeglądarek, ale na przykład nie można uruchomić alarm. Patrz: http://bugs.jquery.com/ticket/10509

Także jeśli chcesz użyć $ .get lub $ .post w rozładunku, to lepiej, że używasz $ .ajax z async = False.

Ex:

$(window).unload(function() { 
      $.ajax({ 
       url: '/some_url.htm', 
       async: false 
      }); 
    }); 
Powiązane problemy