Idle Detection API 是什么?
Idle Detection API 是一个浏览器原生 API,允许 Web 应用检测用户是否处于空闲状态。它能感知用户是否离开键盘、鼠标无操作,甚至是否锁定了屏幕。对于需要根据用户活跃状态调整行为的应用(如即时通讯、在线协作工具、游戏等)非常有用。该 API 可以区分两种状态:用户状态(active / idle)和屏幕状态(unlocked / locked)。
哪些浏览器支持 Idle Detection API?
截至目前,Idle Detection API 主要在 Chromium 内核浏览器中受支持,包括 Google Chrome 94+ 和 Microsoft Edge 94+。Firefox 和 Safari 尚未原生支持该 API。使用前建议通过 'IdleDetector' in window 进行特性检测。此外,该 API 需要安全上下文(HTTPS)才能正常工作。
如何请求空闲检测权限?
调用 IdleDetector.requestPermission() 会弹出浏览器权限提示,用户可选择「允许」、「禁止」或「忽略」。权限状态有三种:granted(已授权)、denied(已拒绝)、prompt(待用户决定)。只有获得 granted 状态后,才能创建 IdleDetector 实例并启动监听。权限可能被用户随时在浏览器设置中撤销。
空闲检测的阈值(threshold)是什么意思?
阈值是指用户无任何操作多少毫秒后,系统将其判定为空闲状态。例如设置为 60000 毫秒(60 秒),则用户停止键盘鼠标操作 60 秒后,userState 将变为 idle。阈值最小为 60000 毫秒(1 分钟),这是浏览器的强制限制,以保护用户隐私,防止高频监控。
使用 Idle Detection API 有哪些隐私考量?
Idle Detection API 具有潜在的隐私敏感性——它可以揭示用户是否在电脑前。因此浏览器实施了多项保护措施:必须用户明确授权;阈值最低 60 秒防止高频监控;仅 HTTPS 环境可用;用户可随时撤销权限。开发者应仅将空闲状态用于提升用户体验(如自动保存、状态同步),而非追踪或监控目的。
空闲检测与传统的监听事件有何不同?
传统方式通过监听 mousemove、keydown、scroll 等事件并用定时器判断空闲,但这种方式无法检测屏幕锁定,也无法感知用户在浏览器外的操作。Idle Detection API 则能直接获取操作系统级别的空闲状态,包括屏幕锁定、系统休眠等传统方法无法感知的场景,且性能更优、更省电。
如何在生产环境中安全使用此 API?
生产环境使用建议:始终进行特性检测(feature detection);使用 AbortController 管理检测生命周期,在不需要时停止;提供降级方案(如回退到传统事件监听);尊重用户隐私,不在未告知的情况下使用空闲数据;在合适的时机请求权限(如用户即将进入需要检测的功能时),而非页面加载时立即请求。
Idle Detection API 可以用于哪些实际场景?
典型应用场景包括:在线协作工具中自动更新用户在线状态;视频会议应用在用户离开时自动开启虚拟背景或静音;游戏在玩家长时间不操作时弹出确认窗口;云文档在用户空闲时自动保存;即时通讯应用在用户离开时显示「离开」状态。所有场景都应以提升用户体验为目标。
UD5工具箱