Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как объединить setInterval и window.onfocus (https://javascript.ru/forum/events/79897-kak-obedinit-setinterval-i-window-onfocus.html)

Димол 05.04.2020 10:07

Как объединить setInterval и window.onfocus
 
Добрый день!
У меня есть скрипт:
function mode() {
............
$(function() {
mode();
});
setInterval(mode, 10000);

который запускает function mode() каждые 10 сек, начиная с нулевой

Надо сделать, что бы была еще проверка на нахождение пользователя на этой странице.
Т.е. function mode() должна запускаться при совпадении двух условий - срабатывание таймера на 10 сек и нахождение пользователя на странице.

Попробовал вот так:

function mode0() {window.onfocus = function (mode);}
setInterval(mode0, 10000);

Но не работает. Как сделать правильно?
Использование именно window.onfocus не обязательно

voraa 05.04.2020 10:38

Можно использовать document.visibilityState

document.visibilityState === 'visible'
Если страница находится на открытой вкладке и окно браузера не минимизировано.
В противном случае document.visibilityState === 'hidden'

Димол 05.04.2020 11:00

А можно поконкретнее, куда и что подставить.
Тогда сразу и попробую.
Я работаю только с PHP, а в javascript полный ноль.

рони 05.04.2020 11:10

Димол,
function mode()
{

};
function loop() {
   document.visibilityState === 'visible' && mode();
   setTimeout(loop, 10000);
};
addEventListener( "DOMContentLoaded" , loop);

Димол 05.04.2020 16:58

Непонятно, но здорово.
Все работает.
Спасибо.


Часовой пояс GMT +3, время: 00:56.