Документ: событие прокрутки
Базовая Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузера. Она доступна в браузерах с сентября 2020 года.
Событие scroll срабатывает, когда просмотренное представление документа было прокручено. Чтобы определить, когда прокрутка завершена, см. событие scrollend для Document. Для прокрутки элемента см. событие scroll для Element.
Синтаксис
Используйте имя события в методах, таких как addEventListener(), или установите свойство обработчика событий.
addEventListener("scroll", (event) => {});
onscroll = (event) => {};
Тип события
Общее Event.
Примеры
Уменьшение частоты событий прокрутки
Поскольку события scroll могут срабатывать с высокой частотой, обработчик событий не должен выполнять вычисления, требующие много ресурсов, такие как изменения DOM. Вместо этого рекомендуется ограничивать частоту события с помощью requestAnimationFrame(), setTimeout() или CustomEvent, как показано ниже.
Однако следует отметить, что события ввода и кадры анимации запускаются примерно с одинаковой частотой, и поэтому приведенная ниже оптимизация часто не нужна. В данном примере оптимизируется событие scroll для requestAnimationFrame.
let lastKnownScrollPosition = 0;
let ticking = false;
function doSomething(scrollPos) {
// Do something with the scroll position
}
document.addEventListener("scroll", (event) => {
lastKnownScrollPosition = window.scrollY;
if (!ticking) {
window.requestAnimationFrame(() => {
doSomething(lastKnownScrollPosition);
ticking = false;
});
ticking = true;
}
});
Спецификации
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
scroll_event |
1 | 12 | 6 | 11.6 | 2 | 18 | 6 | 12 | 1 | 1.0 | 4.4 |
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/Document/scroll_event