2009-08-06 7 views
1

Hey ich rufe history.back() auf dem Klick auf eine Schaltfläche "zurück" in einer Schiene App. Aber nichts passiert. Es gibt eine Historie im Browser - durch Drücken der Zurück-Taste des Browsers komme ich zurück auf die richtige Seite.Javascript history.back() funktioniert nicht in Schienen App

Wenn ich history.go (-2) verwende, wird die Seite jedoch wieder korrekt angezeigt. Also warum muss ich Javascript sagen, um zwei Seiten statt einer zurückzugehen?

Irgendwelche Ideen, wie das zu debuggen?

Ich habe dies in FF und Safari versucht.

Danke!

--Additional Info:

Ok ich um einiges mehr gespielt und das funktioniert:

<a href='javascript:' onclick='history.back();'> 

Ursprünglich war der Code:

<a href='#' onclick='history.back();'> 

Was ist der Unterschied? (Beachten Sie, dass dies früher funktionierte, etwas hat sich geändert, was dazu führt, dass die letztere Verbindung nicht funktioniert)

Antwort

10

haben Sie versucht, return false hinzuzufügen? Also:

<a href='#' onclick='history.go(-1);return false;'> 
+0

ja Hinzufügen von 'Return false' behoben! Danke. Also ist das der empfohlene Ansatz? – Hisham

+1

Ich versuche immer, "Zurück" -Schaltflächen zu vermeiden, da sie von Natur aus unvorhersehbar sind. Wenn jedoch Ihre Frage zu return false genauer ist, sollte sie immer verwendet werden, wenn Sie javascipt ausführen und dann die eigentliche Aktion nicht ausführen wollen Fall "klicken"), weil, was Ihr Code sagte, "gehen Sie zurück eine Seite, dann gehen Sie zu currentpage.html #" welches Ihr Problem war –

8

Wenn Sie link_to_function verwenden es wird automatisch return false zum Ende hinzuzufügen.

<%= link_to_function "Go back", "history.back()" %> 
Verwandte Themen