2009-08-17 7 views
52

Kiedy próbuję zamknąć kartę Google docs z niezapisanymi zmianami, dostaję to w przeglądarce (FF 3.5).Alerty podczas nawigacji z dala od strony internetowej

Czy na pewno chcesz opuścić tę stronę ?

Masz niezapisane zmiany w tym dokumencie . Kliknij przycisk Anuluj teraz, a następnie "Zapisz", aby je zapisać. Kliknij przycisk OK, aby je odrzucić.

Naciśnij przycisk OK, aby kontynuować lub Anuluj na pozostanie na bieżącej stronie.

Moje pytanie brzmi, czy takie alerty są częścią aplikacji internetowej (np. Gdocs), czy są one udostępniane przez przeglądarkę? Jeśli to ostatnie, jak to się robi?

Odpowiedz

83

W przeglądarce. Jest to program obsługi zdarzenia beforeunload, który zwraca dostosowany tekst okna dialogowego, który jest tylko środkiem z trzech akapitów - pozostałe dwa akapity, a także tekst przycisków nie mogą być dostosowywane ani zmieniane w inny sposób.

window.onbeforeunload = function(){ return 'Testing...' } 

// OR 

var unloadListener = function(){ return 'Testing...' }; 
window.addEventListener('beforeunload', unloadListener); 

przyniesie dialog, który mówi

Are you sure you want to navigate away from this page? 

Testing... 

Press OK to continue, or Cancel to stay on the current page. 

można unieważnić to poprzez ustawienie obsługi null

window.onbeforeunload = null; 

// OR 

window.removeEventListener('beforeunload', unloadListener); 
+0

Dzięki Peter. Sprawdziłem, jak zachowują się współczesne przeglądarki w ramach zdarzenia onbeforeunload i opublikowałem moje wyniki. Proszę dodać wszelkie inne skomplikowane szczegóły, które znasz. –

+0

Witaj, Peter, czy nie możemy wykorzystać zdarzenia, aby wygenerować niestandardowy alert, który zapewnia taką samą funkcjonalność, jak natywne okno? – SexyBeast

+0

Nie, żebym wiedział, nie. –

-11

Alerty są częścią aplikacji internetowej. Zobacz kod źródłowy i spójrz na javascript.

+1

poszukaj "onbeforeunload". –

+0

Nie widzę go przynajmniej w źródłach Dokumentów Google. –

+0

Jest prawdopodobnie pochowany w jakimś niejasnym pliku JavaScript. Google używa skryptów, które sprawiają, że ich pliki JavaScript są w zasadzie nieczytelne dla człowieka. – ceejayoz

Powiązane problemy