Jaki jest akceptowany sposób synchronizowania danych aplikacji internetowej z serwerem, gdy użytkownik zamyka okno przeglądarki bez uprzedniego zapisania pracy? Mówię albo uderzając "X", albo nawet naciskając F5 lub coś podobnego.Jak zapisać stan strony podczas zamknięcia
Trochę tła:
webapp w pytaniu jest okno główne, a następnie okna potomne, które pojawiaja sie co jakis głównego okna, umożliwiając piaskownicy „praca” do zrobienia w oknach potomnych. Nie mam kontroli nad tym aspektem wdrożenia.
Przypadek użycia:
Każde okno dziecko może mieć dość sporą ilość informacji wprowadzonej zanim użytkownik zdecyduje się kliknąć „OK”, aby utrzymywać dane na serwerze.
Czego już uważane/próbowałem:
- Proste bliską potwierdzenie powrocie ciąg z obsługi
onbeforeunload
zdarzeń, jeżeli jest niezapisana praca. (problem: moja prowadzić zespół nie chce ruszyć na umożliwienie „alert
okno” przeglądarki specyficzne być w webapp Według niego. Doświadczenie użytkownika wychodzi okno opierając się na tym brzydkim oknie patrząc.) - AJAX żądanie zwolnione podczas zdarzenia
onpageunload
, które wysyła dane z powrotem do serwera. (problem: ponieważ zwrotna XHR nigdy nie jest wywoływana, znajdę jakieś przeglądarek pozostawiając otwarte połączenie, a następnie losowo próbujących odpalić zwrotnego przyszłego oknie, które zostanie otwarte.) - Synchronous AJAX wniosek zwolniony podczas
onpageunload
wydarzenie. (problem: Ignorowanie faktu, że ludzie, w tym ja sam, nienawidzę robienia tego oraz faktu, że jest on nieaktualny i zostanie usunięty w przyszłości ... Interfejs użytkownika może potencjalnie zawiesić się na długi czas oczekiwania na żądanie AJAX do kompletne, może w nieskończoność, jeśli utracą połączenie z Internetem.) - Zapisywanie zawartości strony w regularnych odstępach czasu lub poprzez dołączanie obsługi zdarzeń
onchange
/onblur
/onwhateverelse
. : - Korzystanie
localStorage
zachować zmienione pola na maszynie klienta aż faktycznie popełnić swoje prace do serwera (problem ogromne ilości kodowania napowietrznych w porównaniu do bardziej „leniwe” wdrożeń powyżej i poniżej.). (problem: obsługa przeglądarki ... to musi obsługiwać tyle miejsc, co obsługa XHR.) Czy pamięć po stronie klienta ma tak szerokie wsparcie? Myślę, że jest trochę luki, jeśli się nie mylę.)
Z góry dziękuję za dane wejściowe.
"Doświadczenie użytkownika wychodzi przez okno polegające na tym paskudnie wyglądającym oknie dialogowym." Widzę, że był używany na Facebooku, Gmailu i gdzie indziej. Podejrzewam, że wykonali bardziej obszerne testy doświadczenia użytkownika niż prowadzący. – ceejayoz
Uzgodnione. Niestety ta osoba ma dużo ciągnięcia i niestety, nie mogę skorzystać z opcji 1 :( – Harvtronix
Ponieważ opcje 2, 3 i 5 mogą potencjalnie włamać się do co najmniej niektórych przeglądarek, spraw, by twój zespół wybrał między opcjami 1 i 4. mogą poświęcić czas i pieniądze na zrobienie czegoś, co wymaga więcej wysiłku, aby utrzymać konserwację, lub mogą wybrać proste, "brzydkie" rozwiązanie, które będzie znane użytkownikom końcowym: – BSMP