Diskuze: ajax a backspace (history.back)

JavaScript JavaScript ajax a backspace (history.back)

Avatar
sweetboi
Člen
Avatar
sweetboi:

Zdravim Vas, potreboval bych poradit .... uvedu jako priklad aukro.cz. Pokud filtrujete v levem sloupci, tak se meni jen div s produkty, tedy ajaxem. Prejdu na stranku 2 a pak nasledne BACKSPACE se vratim na stranku 1. Jak docilili toho, ze se reloadnul ajaxem obsah div s produkty ?

Predem dekuji za pomoc
S.

 
Odpovědět 25.2.2014 8:04
Avatar
pavel
Neregistrovaný
Avatar
pavel:

Můžeš použít hash...

 
Nahoru Odpovědět 25.2.2014 8:10
Avatar
sweetboi
Člen
Avatar
sweetboi:

asi mi nerozumis ... schvalne bez na http://aukro.cz/mobily-a-gps?… a v levem sloupci ve filtru vyber "Kup ted" a pak dej back space a ja potrebuji zjistit, jak vyvolal opetovne ajax a obnovil obsah polozek

 
Nahoru Odpovědět 25.2.2014 8:50
Avatar
sidlopa
Člen
Avatar
sidlopa:

Já jsem v práci a Aukro si tu bohužel neotevřu :D, ale asi vím jak to myslíš, potřebuješ aby ti fungovala historie... tlačítko "zpět", nebo "backspace" chceš-li a to bez odeslání požadavku na server (bez reloadu stránky).

Javascript běží na klientovi, takže si prohlížeč historii změn sám od sebe samozřejmě nezaznamená, ale zaznamená změnu hashe, kterou můžeš dynamicky měnit bez nového požadavku na server.

To znamená že uděláš funkci která bude tuto změnu hashe kontrolovat a nějakou další funkci která bude podle něho do stránky načítat chtěný obsah (samozřejmě přes Ajax).

Jak jsem řekl, změny hashe se v historii zaznamenávají takže když pak dáš tlačítko zpět hash se změní, funkce tuto změnu opět zachytí a Ajax ti načte stránku která je na něj vázaná.

 
Nahoru Odpovědět 25.2.2014 9:28
Avatar
sweetboi
Člen
Avatar
sweetboi:

vyzkousim, zatim diky ...

 
Nahoru Odpovědět 25.2.2014 13:22
Avatar
1Pupik1989
Člen
Avatar
1Pupik1989:

Já bych si deklaroval pole a při každém AJAXovém požadavku do něj ukládal url. Potom akorát stačí při stisku backspace z toho pole pomocí metody "pop" (která vrátí a smaže poslední záznam) dostal URL na předchozí stránku.

 
Nahoru Odpovědět 25.2.2014 13:33
Avatar
sidlopa
Člen
Avatar
sidlopa:

To neřeší problém procházení v historii (undo,redo). Navíc na takovou stránku nepůjde udělat přesný link, ajax by při prvním otevření stránky vždy načetl to samé.

 
Nahoru Odpovědět 25.2.2014 14:22
Avatar
user
Redaktor
Avatar
Odpovídá na sweetboi
user:

S příchodem HTML5 lze v javascriptu přistupovat k historii pomocí window.history­.pushState(), window.history­.replaceState(), window.history­.back(), window.history­.forward()

Pro zkombinování s ajaxem tato metoda realizace přímo vyzývá. Bude ale fungovat jen u browserů s podporou HTML 5.

Více zde: https://developer.mozilla.org/…wser_history

 
Nahoru Odpovědět  +1 25.2.2014 14:33
Avatar
1Pupik1989
Člen
Avatar
Odpovídá na sidlopa
1Pupik1989:

Tak url by ani nebyl problém, to se dá změnit přes location.replace, ale odchytávat tlačitka asi půjde blbě, respektive o ničem nevím.

user: Metody "back", "forward" a "go" by měli jít i v IE 6+ tuším.

Nicméně pro vyřešení kompatibility sáhl po hotovém řešení.

https://github.com/…e/history.js

 
Nahoru Odpovědět 25.2.2014 16:14
Avatar
sidlopa
Člen
Avatar
Odpovídá na 1Pupik1989
sidlopa:

A z jakého důvodu odchytávat tlačítka ? On chce pouze zpět v historii (podle titulku vlákna).

 
Nahoru Odpovědět 25.2.2014 20:48
Avatar
sweetboi
Člen
Avatar
sweetboi:

vsem diky za pomoc ....

vystacim si z $(window).on('hashchan­ge',function(){})

pri backspace se meni url vcetne hash, takze vyse zminenym vyvolam funkce, ktere vykonavaji ajax a relaodnou div

S.

 
Nahoru Odpovědět  +1 26.2.2014 13:03
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 11 zpráv z 11.