Метод updateURL() в библиотеке Smooth
Scroll отвечает за синхронизацию адресной строки браузера с
текущим положением страницы при прокрутке. Это позволяет браузеру
корректно отображать хэш в URL, обеспечивает работу кнопок «Назад» и
«Вперед», а также упрощает копирование ссылок на конкретные секции
сайта.
Когда пользователь прокручивает страницу к якорю через Smooth Scroll, библиотека может:
Метод updateURL() вызывается автоматически, если в
конфигурации Smooth Scroll включена опция updateURL: true.
В противном случае его можно вызвать вручную.
const scroll = new SmoothScroll('a[href*="#"]', {
updateURL: true
});
// Вручную
scroll.updateURL('#section1');
Параметры:
hash (строка, необязательный) – хэш якоря, который
будет установлен в адресной строке. Если параметр не передан, библиотека
определяет текущий якорь автоматически.Возвращаемое значение: Метод ничего не возвращает; его задача — изменить URL без перезагрузки страницы.
Опция updateURL в конфиге Smooth
Scroll:
const scroll = new SmoothScroll('a[href*="#"]', {
speed: 800,
offset: 100,
updateURL: true
});
Дополнительно можно управлять поведением через обработку события
scrollStart:
scroll.on('scrollStart', function (event, anchor, toggle) {
// Можно выполнить действия до обновления URL
});
Smooth Scroll использует метод history.pushState() для
изменения хэша в адресной строке. Это позволяет:
Пример:
scroll.updateURL('#about-us');
После вызова URL изменится на
https://example.com/#about-us, но страница останется на
текущей позиции.
id,
Smooth Scroll использует первый найденный.updateURL()
может быть вызван вручную после добавления новых якорей.Метод работает во всех современных браузерах, поддерживающих
history.pushState(). Для устаревших браузеров (например,
IE9 и ниже) изменения URL могут не применяться, и метод фактически
игнорируется.
Автоматическое обновление при клике на ссылку:
const scroll = new SmoothScroll('a[href*="#"]', {
speed: 600,
updateURL: true
});
Ручное обновление после динамической прокрутки:
scroll.animateScroll(document.querySelector('#contact'));
scroll.updateURL('#contact');
Отслеживание текущей секции и обновление URL:
document.addEventListener('scroll', function() {
const section = document.querySelector('.active-section');
if (section) {
scroll.updateURL('#' + section.id);
}
});
updateURL: true для одностраничных сайтов
с большим количеством якорей.updateURL() вручную при динамически созданных
секциях.id элементов, чтобы избежать
некорректного обновления хэшей.Метод updateURL() обеспечивает корректное управление
адресной строкой, улучшает пользовательский опыт и поддерживает
стандартную навигацию браузера при работе с якорями.