Для решения без jQuery проверьте Visibility.js , который предоставляет информацию о трех состояниях страницы
visible ... page is visible
hidden ... page is not visible
prerender ... page is being prerendered by the browser
, а также об удобстве для setInterval
/* Perform action every second if visible */
Visibility.every(1000, function () {
action();
});
/* Perform action every second if visible, every 60 sec if not visible */
Visibility.every(1000, 60*1000, function () {
action();
});
Также доступна резервная копия для старых браузеров (IE & lt; 10; iOS & lt; 7)