С клиента вы можете использовать API видимости страницы , чтобы запрашивать текущую видимость и получать события, когда видимость меняется.
const state = document.visibilityState;
document.addEventListener('visibilitychange', () => {
console.log(document.visibilityState);
});
У сервисных работников вы также можете запроситьсостояние видимости клиентов с WindowClient .
event.waitUntil(
clients.matchAll({ type: 'window' })
.then(function(clientList) {
for (var i = 0; i < clientList.length; i++) {
const state = clientList[i].visibilityState;
}
})
);