Вебсправочник
Ваш первый сайт

Урок: журнал смены видимости вкладки

Небольшой журнал помогает проверить, какие события видимости действительно получает страница. В уроке записи хранятся только в памяти учебной вкладки и никуда не отправляются.

Назначение

Небольшой журнал помогает проверить, какие события видимости действительно получает страница. В уроке записи хранятся только в памяти учебной вкладки и никуда не отправляются.

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

Код устанавливает обработчик, записывает начальное состояние и добавляет новые строки при visibilitychange. Функция завершения снимает обработчик и выводит собранную таблицу. Запускайте пример в собственной странице один раз за опыт.

Пример

const rows = [];
function recordVisibility() {
  rows.push({time:Math.round(performance.now()), state:document.visibilityState});
}
document.addEventListener("visibilitychange", recordVisibility);
recordVisibility();
function finishVisibilityTest() {
  document.removeEventListener("visibilitychange", recordVisibility);
  console.table(rows);
}

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

После переключения вкладок и вызова finishVisibilityTest видна последовательность зафиксированных состояний с относительным временем. Performance.now здесь используется для порядка событий, а не как календарная дата.

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

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

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

Переключите вкладку дважды, затем сверните и восстановите окно. Завершите опыт и сравните записи. Отдельно проверьте потерю фокуса без скрытия документа; не объединяйте blur и hidden в одно понятие.

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