Я создаю одностраничную страницу и использую pushState для изменения адреса.Теперь, если я нажму назад, будет запущено popstate, и я хочу анимировать прокрутку страницы от текущей позиции до последней позиции.Это работает, конечно, но страница переходит наверх.
Кто-нибудь знает, как предотвратить такое поведение?Я использую jQuery для анимации прокрутки ....
Спасибо:)
// edit: хорошо, я узнал, если я анимирую прокрутку, а затемизменяя URL, он не будет прыгать - но теперь мне нужно дважды нажать кнопку «назад», чтобы вернуться ...
http://www.testwebseiten.at/user/falk/stein-jagersbacher.at
Код немного запутан, поэтому я объясняю этонемного:
var scrollCurrentSection = function(event) {
if (typeof event.preventDefault != 'undefined')
event.preventDefault();
var page = "";
if (window.location.href.substr(-1) == '/')
page = sjag.index;
else
page = window.location.href.match(/([^\/]+)$/)[1];
$this = $('a[href$="'+page+'"]');
if ($this.length) {
sjag.scrollToSection($this);
}
}
window.onpopstate = scrollCurrentSection;
В sjag есть несколько опций и методов ... поэтому sjag.index
содержит только 'index.php', sjag.scrollToSection
содержит анимацию.
При нажатии наПо ссылке навигации, вызывается следующая функция:
// set navi
$("#navi a, #navi-add a").click(function(event) {
var data = $(this).data('sjagpage');
if (typeof data == 'undefined')
return;
event.preventDefault();
// animate scrolling
$this = $(this);
sjag.scrollToSection($(this), function() {
history.pushState("", "", $this.attr('href'));
});
});
$(this).data('sjagpage')
содержит элемент jQuery.
Когда я не анимирую прокрутку, для ее получения требуется всего один кликназад - но когда я сейчас его оживляю, нужно два ... зачем?