考え方
・タイマーを設定して、無操作時間の待機を行う。
・特定のイベントを補足して、そのイベントが発生した際にタイマーをリセットする。
実装例
・60秒無操作だった時に確認ダイアログを表示する例
・キー操作、マウス操作を監視している。
// --- データ更新を促す
(function () {
const sec = 60;
const events = ['keydown', 'mousemove', 'click'];
let timeoutId;
// タイマー設定
function setTimer() {
timeoutId = setTimeout(logout, sec * 1000);
}
function resetTimer() {
clearTimeout(timeoutId);
setTimer();
}
// イベント設定
function setEvents(func) {
let len = events.length;
while (len--) {
addEventListener(events[len], func, false);
}
}
// ログアウト
function logout() {
if (window.confirm("1分無操作でした。画面を更新してよろしいですか?")) {
window.location.reload();
}
}
setTimer();
setEvents(resetTimer);
})();
参考
https://qiita.com/shigakin/items/5f0ab0c96a0b8f739a32