2012-05-22 6 views
5

Gibt es eine Möglichkeit, einen Haken wie onHistoryBack bereitzustellen? Ich bin derzeit mit history.js mitGeschichte zurück hook on JavaScript

History.Adapter.bind (window, 'statechange', function() {}); 

Aber ich habe keine Möglichkeit, zu fragen, ob Benutzer presed history.back() oder wenn es aufgrund eines History.pushState() -Aufruf .. irgendeine Idee?

Antwort

2

Die Art, wie ich dies getan habe, war eine Variable festgelegt auf True bei jedem Klick auf die tatsächliche Website. Das Zustandsänderungs-Ereignis würde dann diese Variable prüfen. Wenn es wahr wäre, hätten sie einen Link auf der Site verwendet. Wenn es falsch war, hatten sie auf den Zurück-Button des Browsers geklickt.

Zum Beispiel:

var clicked = false; 

$(document).on('click','a',function(){ 

    clicked = true; 

    // Do something 

}); 

History.Adapter.bind (window, 'statechange', function() { 

    if(clicked){ 
     // Normal link 
    }else{ 
     // Back button 
    } 

    clicked = false; 

}); 

Hoffnung, das hilft :)

+0

danke @will Ich habe gerade das mit einem Ansatz wie deins gelöst, aber ich wickelte meinen History.pushState (...) Aufruf zwischen "angeklickt" Modifikationen, um zu verhindern, dass "statechange" Hook ausgeführt wird –

1

Alle Staaten in History.savedStates gespeichert sind. Jedes Mal, wenn Zurück gedrückt wird, wird ein weiterer Status hinzugefügt. In der Theorie könnten Sie History.savedStates testen, um zu sehen, ob History.savedStates[History.savedStates.length - 2] == currentState. Das würde anzeigen, dass der Benutzer von Schritt a zu Schritt b gegangen ist, zurück zu Schritt a. Der Benutzer kann jedoch andere Wege als die Zurück-Schaltfläche einschlagen. Sie müssen diese Option möglicherweise in Kombination mit Benutzerereignissen verwenden.

Sie können auch die Methode History.getStateByIndex verwenden, um einen gespeicherten Status zurückzugeben.