2011-08-11 14 views
8
  1. Użytkownik Odwiedza stronę A i klika kilkakrotnie, dostosowując stan strony w trakcie jej wykonywania.
  2. Strona A ostatecznie przekierowuje użytkownika do strony B przycisku
  3. kliknięcia użytkownika Przeglądarka tyłu, widzi Strona A znowu w przeglądarce

muszę wykonać jakąś interfejsu Clean-up w punkcie 3.Jak obsłużyć nadejście użytkownika na stronę za pomocą przycisku wstecz przeglądarki?

Jak czy przechwycić to wydarzenie na stronie A?

+2

Oto podobny post obejmujący używanie jQuery i przycisk Wstecz: http://stackoverflow.com/questions/158319/cross-browser-onload-event-and-the-back-button –

Odpowiedz

1

Oprócz możliwości ustawienia pliku cookie, nie można z powodu ograniczenia zabezpieczeń przeglądarki. Obejście problemu polegałoby na sprawdzeniu, czy użytkownik nawiguje z dala od strony za pomocą polecenia onbeforeunload lub onunload fire.

1

Czy w scenariuszu jest możliwe użycie skrótu adresu URL do przejścia na stronę B i użycie AJAX i jQuery do załadowania nowej strony? Dlatego przeglądarka faktycznie nie opuszcza strony. Gdy użytkownik przejdzie z powrotem, wszystko, co zrobią, to zmienić skrót hash URL. Następnie można uchwycić zdarzenia hashchange aby sprawdzić, czy użytkownik ma poruszać z powrotem do strony A.

+0

Connel, podoba mi się pomysł, ale myślę, że nasza aplikacja internetowa będzie zbyt duża dla tej metody. Jest to aplikacja e-commerce w DotNetNuke z ASP.NET Web Forms –

+0

Ah, zawsze warte tego sugestia!Czy wypróbowałeś zaakceptowaną odpowiedź w poście, którą zasugerował @Rionmonster? – Connell

+0

Jeszcze nie, potrzebujesz czasu na analizę. Wygląda obiecująco –

1

mam zamiar zrobić kilka założeń przedstawić sposób to zrobić, który nie jest w pełni uzależniona od javascript:

  1. Zauważyłeś w komentarzach do innej odpowiedzi, że jest to aplikacja ASP.NET. Zakładam, że dbasz tylko o przycisk Wstecz, w którym jest naciskany z innej strony w aplikacji ASP.NET.
  2. Użytkownik kontroluje kod po stronie serwera wykonany w kodzie ASP.NET z tyłu zarówno dla danej strony, jak i dla stron, z których będzie musiał "wycofać".

Jeśli oba te warunki są prawdziwe, powinieneś być w stanie użyć Session variable! Po prostu ustaw bieżącą stronę na zmienną currPage utrzymywaną przez sesję na wszystkich powiązanych stronach. Następnie, gdy strona ładuje się, sprawdź to i użyj jej albo do dostosowania sposobu wyświetlania strony bezpośrednio, albo do napisania wartości do ukrytego pola/wprowadzania/div, które javascript może odczytać i użyć, aby odpowiednio zareagować.

Jeśli przejdziesz trasę JS-read-execute, musisz przetestować, aby upewnić się, że zdarzenia są uruchamiane poprawnie we wszystkich przeglądarkach po naciśnięciu przycisku "od nowa". Jak wspomniano w artykule the link from Rionmonster, czasami zdarzenia ładowania mogą nie uruchamiać się po naciśnięciu przycisku wstecz. Jeśli widzisz z tego problemy, użyj podanych tam sztuczek, aby ominąć to.

Tego typu rozwiązanie powinno działać w przypadku każdej aplikacji internetowej, która wykorzystuje kod po stronie serwera, który może wchodzić w interakcje ze zmiennymi sesji (np. Będzie działał również w PHP, Pythonie i wielu innych).

Uwaga: Jest szansa, że ​​nie będzie to tak eleganckie, jak się wydaje. W wielu przypadkach przeglądarki mogą nie pobrać świeżej strony z serwera po naciśnięciu przycisku Wstecz. Jeśli testowanie ujawni, że jest to problem, być może trzeba będzie zastosować pewne techniki AJAX, aby zapełnić informacje świeżością w JS po naciśnięciu przycisku Wstecz.

Powiązane problemy