Podczas edycji strony w moim systemie użytkownik może zdecydować się na przejście do innej witryny internetowej, a robiąc to, może utracić wszystkie zmiany, których nie zapisał.
Chciałbym przechwycić każdą próbę przejścia do innej strony i poprosić użytkownika, aby był pewien, że chce, aby tak się stało, ponieważ może potencjalnie stracić swoją bieżącą pracę.
Gmail robi to w bardzo podobny sposób. Na przykład utwórz nową wiadomość e-mail, zacznij pisać w treści wiadomości i wprowadź nową lokalizację w pasku adresu (np. Twitter.com lub coś w tym stylu). Zostanie wyświetlony monit z pytaniem „Czy na pewno?”
Pomysły, jak to powtórzyć? Celuję w IE8, ale chciałbym być również kompatybilny z FF i Chrome.
javascript
javascript-events
internet-explorer
Chris Ballance
źródło
źródło
Odpowiedzi:
Podobnie jak odpowiedź Ghommeya, ale obsługuje również starsze wersje przeglądarek IE i Firefox.
źródło
var foo, bar;
jest taki sam jakvar foo;
var bar;
Zobacz ten artykuł. Funkcja, której szukasz, to funkcja przed pobraniem
przykładowy kod:
źródło
Zamiast irytującego wyskakującego okienka potwierdzenia, byłoby miło odłożyć trochę czasu (kwestia milisekund) na pomyślne wysłanie niezapisanych danych na serwer, co udało mi się dla mojej witryny, zapisując fikcyjny tekst na konsoli w następujący sposób:
Edycja: Zobacz także Synchronous_AJAX i jak to zrobić za pomocą jquery
źródło
SCHEDULED_REQUEST
obiekt, który gromadzi wszelkie niepilne informacje, które należy przesłać na serwer, jak bufor danych, skutecznie łącząc wiele żądań w jedno (oczywiście adres URL tych żądań jest taki sam). Jak powiedziałeś, użycie synchronicznego żądania Ajax przed wyładowaniem powinno rozwiązać problem między przeglądarkami. Dziękuję za cenny komentarz!Mam użytkowników, którzy nie uzupełnili wszystkich wymaganych danych.
źródło