2010-12-13 30 views

Odpowiedz

22

powinien obsługiwać zdarzenie onbeforeunload ...

function closeEditorWarning(){ 
    return 'Are you sure?' 
} 
window.onbeforeunload = closeEditorWarning; 

Albo użyć jQuery, window.attachEvent/window.addEventListener to zrobić ładnie

+3

I można wrócić 'undefined' z zwrotnego, powinny chcesz pominąć okno dialogowe potwierdzenia, na przykład po sprawdzeniu, że użytkownik nie zaczął pisać ani edytować czegoś. Jednak jeśli zwrócisz 'null' lub' false', IE wyświetli komunikat z grubsza mówiąc, czy chcesz * null * lub * false *, co dziwne. – KajMagnus

+1

Czy mogę wykonać dowolny kod po kliknięciu przycisku pobytu na stronie? –

-3
function doUnload() 
{ 
    // use confirm dialog box here 
    confirm("Window is closing..."); 

} 

<body onunload="doUnload()"> 
+1

onbeforeunload jest programem obsługi zdarzeń. – mplungjan

1

onunload nie jest bardzo przydatne (w moim opinia), ponieważ nie można uzyskać do niczego z żądanym numerem confirm (z wyjątkiem może to być próba nowego okna z numerem window.open, więc bardziej przydatne jest onbeforeunload w tym przypadku.

Twój lepszy zakład to onbeforeunload, co jest świetne, ale nie działa w Operze (choć zazwyczaj nie jest to łamacz transakcji).

jak bluszcz powiedział, że to wyglądać mniej więcej tak:

<script> 

    var userIsEditingSomething; // set this if something crazy happens 
     oldOnBeforeUnload = window.onbeforeunload; 

    window.onbeforeunload = function() { 
     // attempt to handle a previous onbeforeunload 
     if ('function' === typeof oldOnBeforeUnload) { 
      var message = oldOnBeforeUnload(); 
      if ('undefined' !== typeof message) { 
       if (confirm('string' === typeof message ? message : 'Are you sure you want to leave this page?')) { 
        return; // allow user to exit without further annoying pop-ups 
       } 
      } 
     } 
     // handle our own 
     if (userIsEditingSomething) { 
      return 'Are you sure you want to exit?'; 
     } 
    }; 

</script> 
+0

I wyzwoliłoby to, ilekroć użytkownik opuścił stronę z jakiegokolwiek powodu. NIE TYLKO przy zamykaniu przeglądarki – mplungjan

+0

Masz rację. Chociaż prawdopodobnie istnieją ładne abstrakcje tego problemu (jquery itp.), Lata temu testowałem pod kątem warunku "(event.clientX <0 || event.clientY <0)", aby rozróżnić osobę naciskającą przycisk zamykania okna (warunek jest prawdziwy) i normalnych działań nawigacyjnych (kliknij link, prześlij formularz, z powrotem, do przodu). To nie jest rozwiązanie odporne na awarie (np. ALT-F4 nie został złapany), więc mam nadzieję, że ktoś może dostarczyć ci lepsze rozwiązanie. – ivy

Powiązane problemy