Разработвам AJAX-приложение на Google Maps в JS/PHP и искам да внедря HTML5 History API. Вече внедрих персонализирани дълбоки връзки, така че всичко може да бъде достъпно с красиви URL адреси.
Сега на AJAX get правя следното, за да съхраня историята:
var stateObj = { id: obj.id };
history.pushState(stateObj, null, obj.deeplink);
и за да го изтегля обратно в браузъра, правя:
window.onpopstate = function(event) {
google.maps.event.trigger(markersArray[JSON.parse(event.state.id)], 'click');
};
Съхранява се обаче само 1 стъпка назад, така че когато щракна назад няколко пъти, тя извиква същото, както при първото извикване назад.
Какво не е наред?
Още обяснения
Добре, изглежда, че не съм предоставил достатъчно код. Това е общият onpopstate-listener:
//get popstate event
window.onpopstate = function(event) {
console.log('onpopstate: '+JSON.parse(event.state.id));
google.maps.event.trigger(markersArray[JSON.parse(event.state.id)], 'click');
};
При щракване върху маркер на карта правя следното:
//change URL, save state
history.pushState({ objId: obj.id }, obj.pagetitle, obj.deeplink);
Но, разбира се, задействането на маркер-щракване върху popstate също води до history.pushState, така че мисля, че презаписва последната стойност.
В обекта "история" има само един обект, без значение колко маркера са щракнати.
stateObj
във вашите различни стъпки? - person MrUpsidown   schedule 09.04.2015