Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Odśwież - jakie zdarzenie obsłużyć?
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
newmala
Jaki jest sposób na przejęcie zdarzenie - odśwież w przeglądarce?

Chciałabym, aby mój formularz po odświeżeniu strony załadował wprowadzone wcześniej dane, tak , aby użytkownik ich nie utracił.
Pewnie wiele razy już coś takiego robiliście.


wNogachSpisz
Chyba tylko pod IE.

http://www.quirksmode.org/dom/events/load.html

To nie jest dokładnie to ale bardzo blisko.
kamil4u
Wprost się nie da. Zapisz te dane w przeglądarce( http://blog.kukawski.pl/2009/05/09/przecho...tronie-klienta/ ) przy zdarzeniu wyjścia ze strony( onUnload ). Następnie przy zdarzeniu wejścia na stronę( onLoad ) sprawdź czy istnieją te zapisane dane i jeżeli tak to je wczytaj do formularza( metody DOM-owskie )
newmala
Dzięki , znalzłam coś takiego :
[jquery]
if (!window.onload) {
alert ('przeładowanie strony');
} else {
alert('Clean up');
}
[/jquery]

Czyli za każdym razem jak będzie zdarzenie submit, odświeżenie to wyskoczy alert "Przeładowanie strony", ale kiedy ale zobaczę drugi alert?

Ja dane zapisuję sobie do tablicy $_SESSION, czy tak się robi? Rozumiem, że wtedy przy onload muszę sorawdzić postem, czy mam jakieś dane w tej tablicy i na tej podstawie odtworzyć sobie formularz z danymi? Czy przez jquery jest jakiś inny sposób? Ten opisany DOM Storage pewnie jest zbyt trudne dla początkującej osoby.
kamil4u
Napisałem Ci jak to zrobić. Czego ode mnie oczekujesz? Że napiszę to za Ciebie - raczej nie. Zastosuj się do moich porad i w trakcie pisania tego skryptu pytaj w razie wątpliwości.

Cytat
znalzłam coś takiego

Jakaś bzdura kodowa smile.gif

Cytat
Czyli za każdym razem jak będzie zdarzenie submit, odświeżenie to wyskoczy alert "Przeładowanie strony", ale kiedy ale zobaczę drugi alert?

Zależy od reszty kodu, ale tak się nie pisze, więc dla zwykłego śmiertelnika - nigdy
Cytat
Ja dane zapisuję sobie do tablicy $_SESSION, czy tak się robi?

$_SESSION to tablica w PHP. A tu masz JS. Mógłbyś połączyć PHP z JS( przez AJAX).

Cytat
Rozumiem, że wtedy przy onload muszę sorawdzić postem, czy mam jakieś dane w tej tablicy i na tej podstawie odtworzyć sobie formularz z danymi?

Tak byś musiał zrobić, gdybyś chciał korzystać z PHP( AJAX ). Lepiej zastosować mój pomysł - przynajmniej ja widzę więcej plusów z takiego rozwiązania.

Cytat
Czy przez jquery jest jakiś inny sposób?

jQuery to biblioteka JS. Inaczej mówiąc zbiór funkcji umożliwiający pisanie w prostszy i szybszy sposób. Tak jakbyś napisał czy dojedziesz do Warszawy tylko Oplem( jQuery ), a Ty musisz użyć po prostu auta( JS )

Cytat
Ten opisany DOM Storage pewnie jest zbyt trudne dla początkującej osoby.

Nie wiem, bo już nie jestem początkującą osobą. Artykuł jest moim zdaniem bardzo dobrze opisany. Ale nie musisz z tego korzystać. Ale musisz znaleźć sposób zapisu danych. Nawet jak bardzo chcesz możesz użyć AJAX i próbować tak jak Ty chciałeś. Ja bym zrobił inaczej, ale tak też nie będzie tragedii .
wNogachSpisz
Metod przechowywania informacji po stronie jest kilka:
https://github.com/jeremydurham/persist-js

Cytat
PersistJS (...) currently supports persistent client-side storage through the following backends:
flash: Flash 8 persistent storage.
gears: Google Gears-based persistent storage.
localstorage: HTML5 draft storage.
globalstorage: HTML5 draft storage (old spec).
ie: Internet Explorer userdata behaviors.
cookie: Cookie-based persistent storage.


Tylko niestety ta bibliteka czasami jest wykrywana jako wirus a innymi razy crashuje przeglądarkę sad.gif
a Google Gears jest martwe.
erix
sessionStorage (w końcu chodzi o odświeżenie, a nie zamknięcie przeglądarki), było chyba zdarzenie onBeforeUnload i wtedy przy DOMContentLoaded sprawdzasz istnienie danych w SS.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.