Я использовал следующий код от this link, чтобы иметь гладкую страницу прокрутки, и обратный вызов, который делает, отображает имя якоря после прокрутки (я звоню обратный вызов из .animate):вернитесь к началу страницы с плавным прокруткой и именем привязки в url
$(function() {
$('a[href*=#]:not([href=#])').click(function(event) {
event.preventDefault();
if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) {
var target = $(this.hash);
target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
if (target.length) {
var hash = this.hash; // 'this' will not be in scope in callback
$('html,body').animate({ scrollTop: target.offset().top - 55}, 300, function() {
location.hash = hash;
});
return false;
}
}
});
//Executed on page load with URL containing an anchor tag.
if($(location.href.split("#")[1])) {
var target = $('#'+location.href.split("#")[1]);
if (target.length) {
var hash = this.hash; // 'this' will not be in scope in callback
$('html,body').animate({ scrollTop: target.offset().top - 55}, 300, function() {
location.hash = hash;
});
return false;
}
}
});
Моя проблема заключается в том, что я не знаю, как быть в состоянии вернуться к началу страницы, когда я нажимаю на кнопку назад браузер, то есть вернуться к предыдущему состоянию , Например, сначала я нахожусь на странице (http://example.com/index.html), затем я нажимаю на якорь, я прокручиваю до якоря и после того, как имя привязки установлено в URL (http://example.com/index.htm#anchor). Но если я нажму кнопку «Назад» браузера, я бы хотел, чтобы меня перенаправили в начало страницы. На данный момент, с вышеупомянутым сценарием, ничего не происходит.
Любая помощь приветствуется,
Благодаря
UPDATE:
После ответе Matthew Lymer
«s, я сделал тесты, добавив:
$(document).ready(function(event) {
var target = window.location.href.split("#")[1];
if (target.length) {
var hash = this.hash; // 'this' will not be in scope in callback
$('html,body').animate({ scrollTop: target.offset().top}, 300, function() {
location.hash = hash;
});
return false;
}
но одушевленные прокрутки в верхней части страницы (требуется, когда я нажимаю кнопку «Назад») не работает
Консольные напечатает:
Type Error: target is undefined
Что такое HTML кнопки? – Filipe
кнопка - кнопка назад моего браузера – youpilat13
Взгляните на эту функцию 'popstate', она выполняется при изменении URL-адреса. [Ссылка] (https://developer.mozilla.org/pt-BR/docs/Web/Events/popstate) – Filipe