Autor | Zpráva | ||
---|---|---|---|
Norman Profil |
#1 · Zasláno: 15. 9. 2012, 17:39:33
Zdravím,
v souvislosti s Bind popstate, handle back button tímto tématem, bych měl na Vás lidi ještě jeden dotaz. Zkoušel jsem to zhora zleva zprava zdola, ale nedaří se. Konkrétně: $location = location.pathname; var popped = ('state' in window.history), initialURL = location.href; $(window).bind('popstate', function(event){ var initialPop = !popped && location.href == initialURL; popped = true; if ( initialPop ) return; var state = event.originalEvent.state; if(state && state.url){ window.location.replace(state.url); } }); var popused; popused = false; if(!popused){ history.pushState({url: $location}, document.title, $location); popused = true; } problém je v tom, že pokud pomocí push state uložím proměnou a zmáčknu talčítko zpět(v browseru) tak se promena nezobrazi (v konzoli) az pokud je push state po druhe obevi se promena. To jsem zafixoval timto: var popused; popused = false; if(!popused){ history.pushState({url: $location}, document.title, $location); popused = true; } jenomže, ať se snažim jak se snažím tak to jde zpět jenom do jedné úrovně. (/home -> /books -> /product <- /books <- a zpět na home už nefunguje). Navíc tímto definováním, viz kód výše se stává to, že abych se dosal na předešlou url musím kliknout 2x na back button.. Nevíte někdo jak z této situace ven ? |
||
Norman Profil |
#2 · Zasláno: 16. 9. 2012, 10:46:36
Díky už jsem to vyřešil :), celou situaci šlo řešit jednodušeji :)
$absoluteUrl = location.href; $(window).bind('popstate', function(event){ if(location.href !== $absoluteUrl){ window.location.replace(location.href); } }); |
||
Časová prodleva: 13 let
|
0