2011-07-09 15 views
5

Mam kilka przeciągalnych i zmieniających rozmiar DIV na stronie. Chciałbym zapisać stan tych DIV, aby po odświeżeniu strony DIV wyglądały dokładnie tak, jak przed odświeżaniem.Zapisywanie stanu elementów html podczas odświeżania strony

Widzę takie rzeczy jak Facebook chat. Otwarte okno czatu pozostanie otwarte po odświeżeniu strony. Czy ktoś wie, w jaki sposób jest to realizowane? Czy ktoś może mi doradzić, jak zrobić coś podobnego?

+0

Czy rozwiązanie musi korzystać z javascript? Facebook wykorzystuje ajax do implementacji czatu –

+0

Możliwy duplikat: http://stackoverflow.com/questions/4007131/can-i-capture-and-save-the-current-state-of-a-webpage-using-javascript –

Odpowiedz

5

Jeśli chcesz zrobić to tak, jak robi to Facebook, będziesz musiał wysyłać żądania AJAX do innej ze swoich stron w określonych odstępach czasu, w przypadku Facebooka, za każdym razem, gdy wyślesz wiadomość. Ta strona analizuje żądanie AJAX i aktualizuje je w bazie danych. Po odświeżeniu strony jest wywoływana baza danych, aby zobaczyć, co wyświetlić na czacie.

Problem z używaniem cookie to ograniczenie rozmiaru (Facebook może przechowywać dni rozmów z wykorzystaniem bazy danych).

Nie musisz się również martwić, jeśli klient ma wyłączone pliki cookie, ponieważ wszystkie informacje są przechowywane na serwerze.

1

Mmm, nie proste, ale możliwe. Powinieneś zapisać ten "stan" w pliku cookie, a następnie pobrać ten plik cookie na stronie focus (lub załadować).

Jak tylko ciastka przyznać, sznurki, można konwertować obiektów JavaScript do ciągów za pomocą

var str = JSON.stringify(obj); 

i przekonwertować z powrotem używać

var obj = JSON.parse(str); 

(JSON funkcje są obsługiwane w nowoczesnych przeglądarkach).

W ten sposób można zapisać/pobrać obiekt javascript, można przechowywać (w twoim przypadku) niektóre współrzędne, pozycje, rozmiary, czegokolwiek potrzebujesz.

Mam nadzieję, że to pomoże. Pozdrowienia

+0

I pogadam z nim i zobaczę, co mogę znaleźć. Ile danych można przechowywać w pliku cookie? Czy powinienem martwić się czasem opóźnienia, ponieważ wszystkie pliki cookie są wysyłane na serwer dla każdego żądania? – matt

+0

Możesz przechowywać do 4kb na plik cookie. Serializacja obiektów nie powinna zajmować więcej niż 1k (wystarczy około 200 bajtów), więc opóźnienie absolutnie nie stanowi problemu –

0

Skończyłem właśnie przy użyciu systemu AJAX, który zapisuje dane po stronie serwera. Następnie po załadowaniu strony używa zapisanych danych sesji, aby utworzyć właściwy ekran.

Powiązane problemy