wqertAnna
@wqertAnna

Как сделать, чтобы модалка появилась через 5 секунд непосредственного нахождения на странице,даже если до этого она была открыта в неактивной вкладке?

Мне нужно, чтобы модалка появлялась через 5 секунд пребывания пользователя на странице.
Я использую setTimeout и получается, что если открыть страницу в другой вкладке и не переходить на эту вкладку, а через 5 сек перейти, то модалка появится сразу.
  • Вопрос задан
  • 123 просмотра
Решения вопроса 1
rockon404
@rockon404
Frontend Developer
Вам надо использовать window.onfocus и window.onblur.
По onfocus заводить таймаут. По onblur чистить.
let timeout = null;

const handleClearTimeout = () => {
  clearTimeout(timeout);
};

const handleSetTimeout = () => {
  timeout = setTimeout(() => {
    showModal();
    window.removeEventListener('focus', handleSetTimeout);
    window.removeEventListener('blur', handleClearTimeout);
  }, 5000);
};

window.addEventListener('focus', handleSetTimeout);
window.addEventListener('blur', handleClearTimeout);

if (document.hasFocus()) {
  handleSetTimeout();
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
21 нояб. 2024, в 17:47
7000 руб./за проект
21 нояб. 2024, в 17:30
1500 руб./за проект
21 нояб. 2024, в 17:22
7000 руб./за проект