Jak powszechnie wiadomo, w aplikacjach internetowych XHR (alias AJAX) nie jest tworzona historia Twojej aplikacji, a kliknięcie przycisku odświeżania często usuwa użytkownika z jego bieżącej aktywności. Natknąłem się na location.hash (np. http://anywhere/index.html#somehashvalue
), aby obejść problem odświeżania (użyj location.hash, aby poinformować twoją aplikację o jego bieżącym stanie i użyj procedury obsługi ładowania strony, aby zresetować ten stan). To naprawdę miłe i proste.Czy monitorowanie location.hash rozwiązanie dla historii w aplikacjach XHR?
Doprowadziło mnie to do myślenia o użyciu location.hash do śledzenia historii mojej aplikacji. Nie chcę użyć istniejących bibliotek, ponieważ używają iframe itp Więc oto moja niklu i bilon: Gdy aplikacja strona ładuje zacznę tak:
setInterval(
function(){
if (location.hash !== appCache.currentHash) {
appCache.currentHash = location.hash;
appCache.history.push(location.hash);
/* ... [load state using the hash value] ... */
return true;
}
return false;
}, 250
);
(pamięć podręczną aplikacji jest predefiniowany obiekt zawierający zmienne aplikacji) Pomysł polega na uruchomieniu każdej akcji w aplikacji z wartości mieszania. W przyzwoitych przeglądarkach zmiana wartości hash dodaje wpis do historii, w IE (< = 7) tak nie jest. We wszystkich przeglądarkach nawigacja wstecz lub do strony o innej wartości skrótu nie powoduje odświeżenia strony. Właśnie tam przejmuje funkcja interwałowa. Dzięki funkcji za każdym razem, gdy wykryta zostanie zmiana wartości skrótu (programowo lub poprzez kliknięcie wstecz lub do przodu), aplikacja może podjąć odpowiednie działanie. Aplikacja może śledzić jej historię i powinienem móc wyświetlać przyciski historii w aplikacji (szczególnie dla użytkowników IE).
O ile wiem, działa to w przeglądarce krzyżowej i nie ma żadnych kosztów związanych z zasobami pamięci lub procesora. Moje pytanie brzmi: czy byłoby to opłacalne rozwiązanie do zarządzania historią w aplikacjach XHR? Jakie są plusy i minusy?
Aktualizacja: ponieważ używam mojej architektury homebrew, nie chciałem używać jednej z istniejących frameworków. Aby móc używać location.hash w IE i mieć go również w swojej historii, stworzyłem prosty skrypt (tak, potrzebuje on elementu iframe), który może ci się przydać. Opublikowalem go pod numerem on my site, nie krępuj się używać/modyfikować/krytykować.
Myślałem o tym. Być może zaśmiecająca historia to także kwestia kontroli aplikacji - upewniając się, że użytkownik trafia tam, gdzie aplikacja go prowadzi, więc jego pozycja jest zawsze jasna? – KooiInc