Самый простой способ - установить таймер, который сбрасывается на несколько событий в зависимости от взаимодействия пользователя со страницей. Очень простой пример:
var timeout;
var awake = true;
function resetTimer ()
{
awake = true;
window.clearTimeout(timeout);
timeout = window.setTimeout(function ()
{
awake = false;
}, 36000); // Set the timer for 5 minutes
}
document.documentElement.onfocus = document.documentElement.onmouseover = function ()
{
if (!awake)
runRequests(); // Replace any stale data
resetTimer();
}
В запросах данных вы проверяли бы состояние переменной awake
и, если она ложна, возвращались из функции. При повторном взаимодействии пользователя со страницей необходимые данные будут обновлены, а для переменной awake
снова будет установлено значение true.