| 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