Какой то такой скрипт вставляется на каждую страницу
window.addEventListener('load', () => {
const DEADLINE = 10 * 1000;
// Если нет записи, пишем в sessionStorage
if (!sessionStorage.getItem('timebeg'))
sessionStorage.setItem('timebeg', Date.now() + '');
// Вызов события
const timerevent = (d) => {
alert('TIMEREVENT ' + d);
};
// Функция таймера
const timerfun = () => {
const t0 = +sessionStorage.getItem('timebeg');
const t1 = Date.now();
const d = t1 - t0;
if (d < DEADLINE) {
timer = setTimeout(timerfun, 1000);
} else {
// время истекло
// пишем запись wasevent, что бы не вызывать повторно
sessionStorage.setItem('wasevent', 'true');
timerevent(d);
}
};
let timer;
const stateChange = () => {
// событие уже вызывалось
if (sessionStorage.getItem('wasevent')) return;
if (document.visibilityState === 'visible') {
// страница стала видимой - запустить таймер
timer = setTimeout(timerfun, 1000);
} else {
// страница стала не видимой - отключаем таймер
clearTimeout(timer);
}
};
document.addEventListener('visibilitychange', stateChange);
//запускаем таймер первый раз, если еще не сработал
if (!sessionStorage.getItem('wasevent')) timer = setTimeout(timerfun, 1000);
});