fix: 用户无操作一段时间后进行锁屏
This commit is contained in:
@@ -14,23 +14,28 @@ const { t } = useI18n();
|
|||||||
/**显示遮罩 */
|
/**显示遮罩 */
|
||||||
const isVisible = computed(() => !['none', 'lock'].includes(maskStore.type));
|
const isVisible = computed(() => !['none', 'lock'].includes(maskStore.type));
|
||||||
|
|
||||||
// 等待指定的时间后触发事件的函数
|
// 用户无操作一段时间后进行锁屏
|
||||||
function idleTimeout(time: number, callback: Function) {
|
function idleTimeout(time: number, callback: Function) {
|
||||||
if (time === 0) return;
|
if (time === 0) return;
|
||||||
let timeoutId: any;
|
let timeoutId: any;
|
||||||
|
let idleTime = 0;
|
||||||
function resetTimer() {
|
function resetIdleTime() {
|
||||||
clearTimeout(timeoutId);
|
idleTime = 0;
|
||||||
timeoutId = setTimeout(callback, time);
|
|
||||||
}
|
}
|
||||||
|
// 监听用户活动事件
|
||||||
// 监听浏览器标签是否活动
|
document.addEventListener('mousemove', useThrottleFn(resetIdleTime, 1000));
|
||||||
window.addEventListener('blur', useThrottleFn(resetTimer, 300));
|
document.addEventListener('keydown', useThrottleFn(resetIdleTime, 1000));
|
||||||
window.addEventListener('focus', useThrottleFn(resetTimer, 300));
|
document.addEventListener('click', useThrottleFn(resetIdleTime, 1000));
|
||||||
document.addEventListener('visibilitychange', useThrottleFn(resetTimer, 300));
|
// 定时检查用户是否长时间无操作
|
||||||
|
timeoutId = setInterval(() => {
|
||||||
// 初始化定时器
|
idleTime += 1000;
|
||||||
resetTimer();
|
console.log('idleTime', idleTime, idleTime >= time);
|
||||||
|
if (idleTime >= time) {
|
||||||
|
clearTimeout(timeoutId);
|
||||||
|
// 达到设定的无操作时间,执行锁屏操作
|
||||||
|
callback();
|
||||||
|
}
|
||||||
|
}, 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**组件实例挂载之后调用 */
|
/**组件实例挂载之后调用 */
|
||||||
|
|||||||
Reference in New Issue
Block a user