JavaScript IntersectionObserver.root — область спостереження


Властивість root — це контейнер, відносно якого рахується видимість. За замовчуванням — саме вікно браузера.

автор: NagarD

Загальний опис

Задавати її треба тоді, коли елементи прокручуються не сторінкою, а всередині блоку — довгий список у модальному вікні, чат, бічна панель.

Без неї спостерігач дивитиметься на вікно й повідомить «елемент видно», хоч насправді він схований під прокруткою власного контейнера.

Важлива умова: root має бути предком спостережуваних елементів. Інакше нічого не спрацює — тихо, без помилки.

автор: NagarD

Нотатка

root лише читається. Змінити його після створення спостерігача не можна — потрібен новий.

автор: NagarD

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
root 51+ 55+ 12.1+ 38+ 15+ -
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
root 51+ yes yes 12.2+

Приклади

+ запропонувати свій приклад у пісочниці

Нескінченна прокрутка всередині блоку, а не сторінки.

HTML

<div id="chat" style="height:200px;overflow-y:auto">
    <div id="top"></div>
</div>

JS

// умовна тривала операція для прикладу
function loadOlderMessages() {
    for (let i = 0; i < 1e6; i++);
}

const chat = document.getElementById('chat');

const observer = new IntersectionObserver(entries => {
    if (entries[0].isIntersecting) {
        loadOlderMessages();
    }
}, {
    // дивимось на контейнер, а не на вікно
    root: chat,
});

observer.observe(document.getElementById('top'));

console.log(observer.root === chat); // true
автор: NagarD

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід