I verwendet (https://github.com/browserstate/history.js) und haben ein Stück Code wie diesesBrowser zurück und Vorwärts-Taste nicht Callback-Methode mit stateFall history.js
History.Adapter.bind(window, 'statechange', function() {
var State = History.getState();
alert('Inside History.Adapter.bind: ' + State.data.myData);
});
function manageHistory(url, data, uniqueId){
var History = window.History;
if (!History.enabled) { return false; }
History.replaceState({myData: data}, null, '?stateHistory=' + uniqueId);
}
berufen, wenn ich manageHistory()
nach meiner Ajax-Aufruf aufrufen, dann History.Adapter.bind
Callback-Methode wird korrekt aufgerufen. Wenn ich jedoch auf den Browser zurück und dann auf die Schaltfläche Weiter klicken, die in Seitennavigation von B nach A führen, dann wird A zurück zu B, Rückrufmethode innerhalb History.Adapter.bind
wird nicht aufgerufen. Dies geschieht sowohl bei Chrome als auch bei IE9. Wer weiß, wie man dieses Problem beheben kann, muss ich den State
nach dem Klick-Browser zurück und dann weiterleiten, um mein DOM zu aktualisieren. Bitte helfen
Hinweis: Ich verwende Version 1.7.1 jquery.history.js für HTML4 Browser IE9
UPDATE (3. Mai 2013): Sprechen Sie ein bisschen mehr über meine Anforderung
Entschuldigung Ich war mit anderen Aufgaben beschäftigt, die ich bis jetzt nicht habe, um dieses Thema zu betrachten. So oncomplete
eines Ajax Anrufs, nahm ich diese Informationen, die zu mir zurück, und drücken Sie es in den Zustand. Meine Anforderung ist: Wenn ich von Seite A zu Seite B und dann auf Seite B navigiere, führe ich eine Anzahl von AJAX-Anfragen aus, die zu DOM-Manipulationen führen (lassen Sie jede AJAX-Anfrage, die zur DOM-Manipulation führt, state
). Wenn ich auf die Zurück-Schaltfläche klicke, sollte ich zu Seite A zurückkehren, und wenn ich auf die Vorwärts-Schaltfläche klicke, gehe ich zu Seite B mit dem letzten Status, in dem ich war.
Also mein Gedanke war, oncomplete
von meinem Ajax Anfrage, würde ich den letzten Staat in der Geschichte durch meinen gegenwärtigen Zustand ersetzen (mein json Gegenstand ist der HTML, den ich zurück von der Ajaxanforderung empfange). Wenn ich Push-Status verwende, sagen wir, ich bin auf Seite B, und ich klicke auf eine Schaltfläche, meine Seite ändert sich jetzt zu aaa
, ich pushState aaa
. Wenn ich dann auf eine andere Schaltfläche klicke, ändert sich meine Seite jetzt zu bbb
, ich drücke pushState bbb
. Wenn ich jetzt auf die Zurück-Schaltfläche klicke, würde ich immer noch auf Seite B sein, mit meinem Zustand in History.Adapter.bind(window, 'statechange', function() {})
als aaa
, wenn ich wieder auf die Schaltfläche zurück klicke, würde ich auf Seite A gehen. Ich will dieses Verhalten nicht. Ich möchte, dass wenn ich auf Seite B bin mit dem Status , und klicke zurück, ich gehe zu Seite A, und wenn ich vorwärts klicke, würde ich auf Seite B mit dem Status bbb
gehen. Ich hoffe, das macht mehr Sinn. Bitte helfen
re: Ihr Update - Ich glaube, Sie wollen nicht die Geschichte verwenden „Zustandsänderungen“ innerhalb der Seite B/A zu verfolgen. Verwenden Sie den Verlauf nur in Verbindung mit einer Änderung Ihrer URL. Alle Statusänderungen innerhalb einer einzelnen URL (dh A vs B) sollten den Status durch einen anderen Mechanismus speichern (nicht durch history.replaceState(); ... Dies ist sehr einfach mit einer MV * Library wie Backbone oder Angular. – 1nfiniti
Check out jquery-mobile, sie haben eine Ajaxy-Art der Handhabung von Seiten, die Sie möglicherweise nützlich finden: http://jquerymobile.com/ – euxneks