← Wszystkie wpisy

Poradniki

Auto-pager — nieskończone przewijanie na dowolnej stronie

Forum, archiwum bloga, wyniki wyszukiwania — treść rozbita na 40 stron z „Następna" na dole. Klik, czekaj, klik, czekaj. Auto-pager robi to za Ciebie: gdy dojeżdżasz do końca, reguła sama pobiera kolejną stronę i dokleja jej treść. Nieskończone przewijanie na stronie, która go nie ma.

Pomysł

Każda strona z paginacją ma dwie rzeczy: link „dalej" (często <a rel="next">) i kontener z właściwą treścią. Auto-pager:

  1. Wykrywa, że doscrollowałeś blisko końca.
  2. Pobiera HTML następnej strony przez fetch.
  3. Wyciąga z niego kontener treści i dokleja jego dzieci do bieżącego.
  4. Podmienia link „dalej" na ten z nowej strony — i tak w kółko.

Reguła

JavaScript reguły — dwa selektory na górze dostosuj do konkretnej strony:

const NEXT = 'a[rel="next"]';
const LIST = '#content';
let loading = false;
addEventListener('scroll', async () => {
  if (loading || !document.querySelector(NEXT)) return;
  if (innerHeight + scrollY < document.body.offsetHeight - 1200) return;
  loading = true;
  const next = document.querySelector(NEXT);
  const html = await fetch(next.href).then(r => r.text());
  const doc = new DOMParser().parseFromString(html, 'text/html');
  const more = doc.querySelector(LIST);
  if (more) document.querySelector(LIST).append(...more.childNodes);
  const nn = doc.querySelector(NEXT);
  nn ? (next.href = nn.href) : next.remove();
  loading = false;
});

Dwa selektory do dostrojenia

Jak to działa

Wykrycie końca

innerHeight + scrollY to pozycja dolnej krawędzi okna w dokumencie. Gdy zbliża się do document.body.offsetHeight (z zapasem 1200 px), czas dociągnąć więcej.

Blokada loading

Zdarzenie scroll sypie się dziesiątkami na sekundę. Flaga loading gwarantuje, że jeden fetch leci naraz — bez niej dokleiłbyś tę samą stronę dwadzieścia razy.

DOMParser

fetch zwraca surowy HTML jako tekst. DOMParser zamienia go w przeszukiwalny dokument, z którego querySelector wyciąga sam kontener treści — bez nagłówka, stopki i menu nowej strony.

Pułapki

Zobacz też

Zainstaluj JustZix — i przewijaj zamiast klikać „Następna".

Oceń ten wpis

Brak ocen — oceń jako pierwszy.

Wypróbuj samodzielnie

Zainstaluj JustZix i wklej dowolny snippet z tego artykułu. Dwie minuty od zera do działającej reguły na wszystkich Twoich urządzeniach.

Pobierz JustZix

Funkcje · Jak to działa · Przykłady · Zastosowania