Вебсправочник
Основы веб-разработки

Page Visibility API: активная и скрытая вкладка

Page Visibility API позволяет учитывать, виден ли документ пользователю в данный момент. Это помогает приостанавливать необязательные обновления интерфейса, не полагаясь только на потерю фокуса окна.

Назначение

Page Visibility API позволяет учитывать, виден ли документ пользователю в данный момент. Это помогает приостанавливать необязательные обновления интерфейса, не полагаясь только на потерю фокуса окна.

Как это работает

Свойство document.visibilityState содержит текущее состояние, а visibilitychange сообщает о смене. В собственной странице создайте абзац id visibility-note. Код обновляет его сразу и затем при событиях.

Пример

const note = document.querySelector("#visibility-note");
function updateVisibility() {
  note.textContent = document.hidden ? "Документ скрыт" : "Документ видим";
  console.log(document.visibilityState);
}
document.addEventListener("visibilitychange", updateVisibility);
updateVisibility();

Что должно получиться

При переключении на другую вкладку состояние обычно становится hidden, при возврате — visible. Сообщение в самой странице можно прочитать после возврата, а историю смен — в консоли.

Граница применения и частая ошибка

Visible не означает, что человек смотрит на конкретный блок или прочитал материал. Таймеры фоновых вкладок могут ограничиваться браузером, поэтому счётчик времени нельзя строить на предположении о точных интервалах. Не связывайте сохранность важных данных только с поздним событием ухода.

Самостоятельная проверка

Сравните переключение вкладки, сворачивание окна и перевод фокуса между двумя видимыми окнами. Запишите различия с blur. Если добавите периодическое обновление, проверьте его остановку и однократное возобновление.

Самостоятельный учебный материал. Техническая документация: первоисточник по теме ↗. Если результат отличается, проверьте код и версию браузера.