Comment détecter quand un utilisateur est inactif en JavaScript ?

Réponses rédigées par Antoine
Dernière mise à jour : 2020-03-11 23:38:23
Thèmes : webmaster - javascript
Question

Comment détecter quand un utilisateur est inactif en JavaScript, c'est à dire quand aucune action n'est effectuée sur une page Web depuis un temps donné ?

Réponse

On peut détecter quand un utilisateur est inactif en JavaScript en vérifiant si l'internaute inter-agit avec la page ; pour cela on utilise les méthodes onload, onmousemove, onmousedown, ontouchstart, onclick et onkeypress.

Dans l'exemple suivant on crée deux fonctions, l'une est la fonction qui réinitialise le chronomètre chaque fois qu'une interaction est détectée, et l'autre est la fonction qui est exécutée périodiquement pendant la période d'inactivité de l'utilisateur. Pour cela on utilise la méthode JavaScript setInterval().

<!DOCTYPE html> 
<html>
<head>
<meta charset="utf-8">
<title>Comment détecter quand un utilisateur est inactif en JavaScript ?</title>
</head>
<body> 
<p class="delai">Vous êtes inactif depuis <span class="secondes"></span> secondes.</p> 
<script> 
let temps, secondes = 0; 
function resetTemps()
{ 
	document.querySelector(".delai") .style.display = 'none'; 
	clearInterval(temps); 
	secondes = 0; 
	temps = setInterval(startTemps, 1000); 
}

window.onload = resetTemps;
window.ontouchstart = resetTemps; 
window.onclick = resetTemps; 
window.onkeypress = resetTemps;
window.onmousemove = resetTemps; 
window.onmousedown = resetTemps;  

function startTemps() 
{ 
	secondes++; 
	document.querySelector(".secondes").textContent = secondes; 
	document.querySelector(".delai") .style.display = 'block'; 
} 
</script> 
</body>
</html>