IdleDetector
注意:此功能在 专用 Web Workers 中可用。
IdleDetector 接口是 空闲检测 API 的一部分,它提供了检测设备或屏幕上用户活动的方法和事件。
此接口需要安全上下文。
构造函数
IdleDetector()实验性-
创建一个新的
IdleDetector对象。
实例属性
IdleDetector.userState只读 实验性-
返回一个字符串,指示用户是否在调用
start()时提供的阈值内与屏幕或设备进行过交互,该字符串的值为"active"(活动)或"idle"(空闲)。在调用start()之前,此属性返回null。 IdleDetector.screenState只读 实验性-
返回一个字符串,指示屏幕是否已锁定,该字符串的值为
"locked"(已锁定)或"unlocked"(未锁定)。在调用start()之前,此属性返回null。
事件
change实验性-
当
userState或screenState的值发生变化时触发。
静态方法
IdleDetector.requestPermission()实验性-
返回一个
Promise,当用户选择是否授予来源访问其空闲状态的权限时,该 Promise 会解析。如果接受,则解析为"granted"(已授予);如果拒绝,则解析为"denied"(已拒绝)。
实例方法
IdleDetector.start()实验性-
返回一个
Promise,当检测器开始监听用户空闲状态的变化时,该 Promise 会解析。userState和screenState会获得初始值。此方法接受一个可选的options对象,其中包含以毫秒为单位的threshold(应报告不活动的阈值)和用于中止空闲检测器的signal(一个AbortSignal)。
示例
以下示例演示了如何创建一个检测器并记录用户空闲状态的变化。使用一个按钮在请求权限之前获取必要的用户激活。
js
const controller = new AbortController();
const signal = controller.signal;
startButton.addEventListener("click", async () => {
if ((await IdleDetector.requestPermission()) !== "granted") {
console.error("Idle detection permission denied.");
return;
}
try {
const idleDetector = new IdleDetector();
idleDetector.addEventListener("change", () => {
const userState = idleDetector.userState;
const screenState = idleDetector.screenState;
console.log(`Idle change: ${userState}, ${screenState}.`);
});
await idleDetector.start({
threshold: 60_000,
signal,
});
console.log("IdleDetector is active.");
} catch (err) {
// Deal with initialization errors like permission denied,
// running outside of top-level frame, etc.
console.error(err.name, err.message);
}
});
stopButton.addEventListener("click", () => {
controller.abort();
console.log("IdleDetector is stopped.");
});
规范
| 规范 |
|---|
| 空闲检测 API # api-idledetector |
浏览器兼容性
加载中…