Dokument: scroll event
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since Juli 2015.
Das scroll-Ereignis wird ausgelöst, wenn die Dokumentansicht gescrollt wurde. Um zu erkennen, wann das Scrollen abgeschlossen ist, siehe das scrollend-Ereignis des Document. Für das Scrollen von Elementen siehe das scroll-Ereignis von Element.
Syntax
Verwenden Sie den Ereignisnamen in Methoden wie addEventListener() oder setzen Sie eine Ereignis-Handler-Eigenschaft.
addEventListener("scroll", (event) => { })
onscroll = (event) => { }
Ereignistyp
Ein generisches Event.
Beispiele
>Throttling des Scroll-Ereignisses
Da scroll-Ereignisse in hoher Frequenz ausgelöst werden können, sollte der Ereignis-Handler keine rechenintensiven Operationen wie DOM-Modifikationen ausführen. Wenn Sie bei schnellem Scrollen ein Ruckeln bemerken, sollten Sie in Betracht ziehen, das Ereignis zu drosseln.
Beachten Sie, dass Sie möglicherweise Code sehen, der den scroll-Ereignis-Handler mit requestAnimationFrame() drosselt. Dies ist nutzlos, da Animationsframe-Rückrufe mit der gleichen Frequenz wie scroll-Ereignis-Handler ausgeführt werden. Stattdessen müssen Sie die Timeout-Zeit selbst messen, beispielsweise mit setTimeout().
let lastKnownScrollPosition = 0;
let ticking = false;
function doSomething(scrollPos) {
// Do something with the scroll position
}
document.addEventListener("scroll", (event) => {
lastKnownScrollPosition = window.scrollY;
if (!ticking) {
// Throttle the event to "do something" every 20ms
setTimeout(() => {
doSomething(lastKnownScrollPosition);
ticking = false;
}, 20);
ticking = true;
}
});
Alternativ sollten Sie erwägen, stattdessen IntersectionObserver zu verwenden, der ein schwellenwertbasiertes Zuhören ermöglicht.
Spezifikationen
| Specification |
|---|
| CSSOM View Module> # eventdef-document-scroll> |
| HTML> # handler-onscroll> |
Browser-Kompatibilität
Loading…