Sans utiliser jQuery, uniquement du vanilla JavaScript:
var inactivityTime = function () {
var time;
window.onload = resetTimer;
// DOM Events
document.onmousemove = resetTimer;
document.onkeypress = resetTimer;
function logout() {
alert("You are now logged out.")
//location.href = 'logout.html'
}
function resetTimer() {
clearTimeout(time);
time = setTimeout(logout, 3000)
// 1000 milliseconds = 1 second
}
};
Et lancez la fonction là où vous en avez besoin (par exemple: onPageLoad).
window.onload = function() {
inactivityTime();
}
Vous pouvez ajouter plus d'événements DOM si vous en avez besoin. Les plus utilisés sont:
document.onload = resetTimer;
document.onmousemove = resetTimer;
document.onmousedown = resetTimer; // touchscreen presses
document.ontouchstart = resetTimer;
document.onclick = resetTimer; // touchpad clicks
document.onkeypress = resetTimer;
document.addEventListener('scroll', resetTimer, true); // improved; see comments
Ou enregistrez les événements souhaités à l'aide d'un tableau
window.addEventListener('load', resetTimer, true);
var events = ['mousedown', 'mousemove', 'keypress', 'scroll', 'touchstart'];
events.forEach(function(name) {
document.addEventListener(name, resetTimer, true);
});
Liste des événements DOM : http://www.w3schools.com/jsref/dom_obj_event.asp
N'oubliez pas d'utiliser windowou documentselon vos besoins. Ici vous pouvez voir les différences entre eux: Quelle est la différence entre la fenêtre, l'écran et le document en Javascript?
Le code mis à jour avec @ frank-conijn et @daxchen s'améliore: window.onscrollne se déclenche pas si le défilement est à l'intérieur d'un élément déroulant, car les événements de défilement ne bouillonnent pas. window.addEventListener('scroll', resetTimer, true), le troisième argument indique à l'auditeur d'attraper l'événement pendant la phase de capture au lieu de la phase de bulle.