2015-03-24 14 views
5

Mam jednej aplikacji Strona działa w PhoneGap, a dzięki zawartości jazdy z Sammy.jsJavascript - Powrót historia przycisk

Rozważ to:

Na stronie głównej jest domain.com/#/panel enter image description here

Potem klikam na reglas (przepisy) w location.hash aktualizacje #/przepisy

enter image description here

Po tym widzę aktualnych przepisów, gdy kliknę nikomu tego, zaktualizować ponownie location.hash do #/regulacja/1 (lub cokolwiek jest liczba regulacja):

enter image description here

Oto sprawa:

mam przycisk wstecz wewnątrz mojej aplikacji na pasku nawigacyjnym obok tytułu ekranu i mieć kliknij słuchacza z tym:

$('back').click(function(e) { 
    e.preventDefault; 
    // window.history.back(); 
    history.back(); 
}); 

Działa dobrze, gdy jestem na drugim ekranie (#/rules), to przywraca mnie do #/panelu. Ale kiedy jestem na trzecim ekranie (#/regulacja/1), przenosi się ponownie do #/panelu zamiast sekcji #/rules.

Po kliknięciu przycisku przeglądarki działa bardzo dobrze, ale jakoś po kliknięciu przycisku MY back nie działa poprawnie.

Czytałem kilka wątków na ten temat, jak Mozilla jedna: enter image description here

jak Mozilla powiedział, powinien działać dokładnie tak, jakbym kliknięciu przycisku Wstecz przeglądarki, ale tak nie jest.

Próbowałem z:

window.history.back(); 
    window.history.go(-1); 
    history.back(); 
    history.go(-1); 

To nie wydaje się pracować z niczego.

Czy ktoś może pomóc?

+2

odjazdu pushState i popState: https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Manipulating_the_browser_history – Anthony

+0

1) try window.history.length; aby zobaczyć, ile łączy masz w historii, gdy jesteś na trzecim ekranie! – Cassian

+0

2) co się stanie, jeśli spróbujesz z trzeciego ekranu history.go (-2)? – Cassian

Odpowiedz

1

Niestety małe błędy zdarza się każdemu:

e.preventDefault(); (nawiasy) i #back (ostry) były problemem.

Jednakże, jeśli ktoś się w tym kłopoty, Mozilla miał powód, którejś z tych linii pracy dokładnie tak, jak wtedy, gdy użytkownik kliknie przycisk Wstecz w przeglądarce:

$('#back').click(function(e) { 
    e.preventDefault(); 
    window.history.back(); 
    // window.history.go(-1); 
    // history.back(); 
    // history.go(-1); 
}); 
Powiązane problemy