Ich verwende history.js und habe einen Event-Handler
%Vor% Die meisten Inhaltsänderungen werden durch History.pushState([...])
ausgelöst, wenn der Benutzer auf einen Link oder eine Schaltfläche klickt.
Aber in einigen Fällen wird die Inhaltsänderung direkt von Javascript verwaltet (d. h. indem ein DOM-Element geändert, hinzugefügt oder entfernt wird) und der Inhalt, der den neuen Status darstellt, nicht über Ajax geladen werden muss.
Immer noch muss ich einen Zustand drücken und die URL ändern, um den neuen Zustand widerzuspiegeln, sollte der Benutzer neu laden oder später die Zurück-Taste usw. verwenden.
Meine Frage ist also: Wie schiebe ich einen Zustand, aber lade den Inhalt in einigen Fällen nicht? Gibt es eine Art Flag, die an den Statechange-Event-Handler übergeben werden kann oder kann ich sie umgehen?
Ich habe mich auch über diese Frage gewundert. Meine Entscheidung war, eine globale Variable zu verwenden. Zum Beispiel können Sie window.stateChangeIsLocal als false initialisieren:
%Vor% Ihr statechange
-Handler könnte in etwa so aussehen:
Wenn Sie den Status ändern und keinen Inhalt eines neuen Status laden möchten, legen Sie einfach window.stateChangeIsLocal
als true
;
Vielleicht gibt es einige elegantere Lösungen, aber ich konnte sie nicht finden und verwenden.
Tags und Links jquery ajax history.js