2012-01-23 6 views
46

Kiedy użytkownik ładuje stronę, natychmiast wykonuję przekierowanie okna do innej lokalizacji.W JavaScript, jak mogę "wyczyścić" powrót (historia -1)?

Problem polega na tym, że po kliknięciu przez użytkownika nastąpi powrót do strony przekierowania.

Czy mogę "anulować" historię poprzedniej strony? Tak więc, gdy użytkownik kliknie z powrotem, zamiast tego wraca DWÓCH stron?

Odpowiedz

78

Zamiast window.location = url; przekierować,

try:

window.location.replace(url); 

po użyciu wymienić() bieżąca strona nie zostanie zapisana w sesji historii, co oznacza, że ​​użytkownik nie będzie być w stanie użyć przycisku Wstecz, aby przejść do niego.

+1

Dzięki ... Szukałem tego. – Neeraj

+0

To działa dla stron, które mam kontrolę nad ładowaniem, ale co z przypadkami, w których chcesz wyczyścić wszystkie poprzednie przeglądarki (różne witryny)? Jestem leniwy i nie chcę obsługiwać wychodzenia z aplikacji internetowej celowo lub celowo za pomocą przycisku wstecz. –

8

Możesz użyć location.replace, aby zamienić bieżący wpis lokalizacji (stronę przekierowania) na nowy (cel). To wymaga, aby zrobić przekierowanie za pośrednictwem JavaScript raczej niż z metatagów lub 302. Np .:

// In the redirecting page 
location.replace("path/to/target/page"); 

Live example | Live example source

3

Na każdy napotykając tej stronie i szukasz angularjs drogą do osiągnięcia tego (zamiast javascript), należy wymienić usługa $ lokalizacji() metodę (documentation):

Używaj $location.url('/newpath'); lub $location.path('/newpath'); jak ty normalnie wykonałbym przekierowanie w kanciastym. A następnie dodaj po prostu $location.replace();. Lub możesz łańcuchować polecenia w ten sposób:

$location.url('/newpath').replace();