idle detection api 不能直接锁定 dom,需结合权限校验、状态监听与 dom 操作三步协同:先确认浏览器支持及 https 环境,再通过用户手势申请权限并设置 ≥60 秒阈值,监听 change 事件后对敏感区域添加锁定属性、禁用交互并暂停后台行为,用户返回时平滑还原状态并保留草稿。

Idle Detection API 本身不能直接“锁定 DOM 内容”,但它能可靠识别用户是否已离开电脑(如无键盘/鼠标操作、屏幕锁定),这是触发敏感内容保护的关键前提。真正实现 DOM 锁定,需结合权限校验、状态监听与 DOM 操作三步协同完成。
确认浏览器支持与 HTTPS 环境
该 API 仅在 Chrome 94+ / Edge 94+ 中可用,且必须运行在 HTTPS 协议下(本地 localhost 除外)。非安全上下文会静默失败,不抛错也不提示。
- 检查
window.IdleDetector是否存在,不存在则降级使用visibilitychange+ 定时器模拟(仅能判断页面是否隐藏,无法感知真实离座) - 避免在页面加载完成时立即调用,须等待用户明确交互(如点击按钮)后才可触发权限请求
申请权限并启动检测器
权限请求必须由用户手势触发(例如点击“开启隐私保护”按钮),否则会被浏览器拦截。阈值至少设为 60 秒,低于该值会抛出 DOMException。
电脑手机电子配件电子商城网站模板是一款提供手机、手表、电脑等电子配件和设备的电子商城宣传网站模板下载。提示:本模板调用到谷歌字体库,可能会出现页面打开比较缓慢。
- 调用
await IdleDetector.requestPermission(),仅当返回'granted'才继续 - 创建实例时指定
threshold: 60000(单位毫秒),表示连续 60 秒无交互即判定为 idle - 监听
change事件,根据detector.userState判断:值为'idle'表示用户极可能已离开电脑;'active'表示有交互;'locked'表示屏幕已锁(更确定的离座信号)
异步锁定敏感 DOM 的具体做法
检测到 userState === 'idle' 后,不应立即清空或隐藏内容,而应执行可逆、低干扰的锁定动作,并保留恢复入口。
- 对含敏感信息的区域(如
div#bank-details)添加data-locked="true"属性,并切换 CSS 类(例如.sensitive-locked),使其显示模糊遮罩或占位提示 - 移除所有表单输入框的焦点,禁用其
tabindex,防止键盘导航误触 - 暂停自动轮询、视频播放、WebSocket 心跳等后台行为,减少资源消耗与数据暴露风险
- 不执行
innerHTML = ''或remove()—— 这会导致用户返回后无法恢复原始状态,也影响无障碍访问
恢复机制与用户体验细节
用户重新操作后,API 会再次触发 change 事件,userState 变为 'active'。此时应平滑还原,而非强制刷新。
- 还原 DOM 属性与样式类,延迟 100ms 再聚焦首个可操作元素,避免视觉突变
- 若锁定期间有未提交的表单草稿,应在解锁时弹出轻量提示:“检测到您离开,已为您暂存内容”,并提供一键恢复按钮
- 记录每次锁定/解锁时间戳,用于审计或优化阈值(例如发现多数用户 90 秒内返回,则可将 threshold 提升至 90000)
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!










