przycisk wstecz i naprzód przeglądarki nie wywołuje metody wywołania zwrotnego ze zdarzeniem zmiany historii ze stat.js
Użyłem (https://github.com/browserstate/history.js) i mieć taki fragment kodu
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);
}
jeśli wezwęmanageHistory()
po moim wywołaniu ajaxowymHistory.Adapter.bind
metoda wywołania zwrotnego została poprawnie wywołana. Jeśli jednak kliknę przeglądarkę z powrotem, a następnie kliknę przycisk Dalejskutkuje nawigacją strony od B do A, następnie A do B, oddzwoń do środkaHistory.Adapter.bind
nie zostanie wywołany. Dzieje się tak zarówno w Chrome, jak i IE9. Każdy wie, jak rozwiązać ten problem, muszę uzyskaćState
po kliknięciu przeglądarki wstecz, a następnie do przodu, aby zaktualizować mój DOM. Proszę pomóż
Uwaga: Używam wersji 1.7.1 jquery.history.js dlaprzeglądarka html4 IE9
AKTUALIZACJA (3 maja 2013 r.): Porozmawiaj trochę więcej o moich wymaganiach
Przepraszam, że byłem zajęty innym zadaniem, które niestety do tej pory nieraz sprawdzałem. Więconcomplete
wywołania ajax, wziąłem te informacje, które wracają do mnie, i pchnę je do stanu. Moje wymaganie jest następujące: jeśli przechodzę od strony A do strony B, a następnie na stronie B, wykonuję numery żądań ajax, które powodują manipulację DOM (pozwól wywołać każde żądanie ajax powodujące manipulację DOM astate
). Jeśli kliknę przycisk Wstecz, powinienem wrócić do strony A, a jeśli kliknę przycisk Dalej, powinienem przejść do strony B z ostatnim stanem, w którym byłem.
Więc moja myśl była,oncomplete
mojego żądania ajax, zamieniłbym ostatni stan w historii na mój obecny stan (moim obiektem json jest html, który otrzymuję z żądania ajax). Jeśli korzystam ze stanu push, powiedzmy, że jestem na stronie B i klikam jeden przycisk, moja strona zmieni się naaaa
, Pcham stanaaa
. Następnie, jeśli kliknę inny przycisk, moja strona zmieni się nabbb
, Pcham stanbbb
. Jeśli teraz kliknę przycisk Wstecz, nadal będę na stronie B, z moim stanemHistory.Adapter.bind(window, 'statechange', function() {})
Pokaż jakoaaa
Jeśli kliknę ponownie przycisk Wstecz, przejdę do strony A. Nie chcę tego zachowania. Chcę tego, jeśli jestem na stronie B ze stanembbb
i kliknij wstecz, przejdę do strony A, a jeśli kliknę do przodu, przejdę do strony B ze stanembbb
. Mam nadzieję, że to ma więcej sensu. Proszę pomóż