周末给自家的在线学习项目做体验巡检,最大痛点不是功能,而是——看着看着屏幕就黑了。手又没动、系统就当你“离开”。解决它不需要黑魔法:用浏览器原生的 Screen Wake Lock API。
周末给自家的在线学习项目做体验巡检,最大痛点不是功能,而是——看着看着屏幕就黑了。手又没动、系统就当你“离开”。
解决它不需要黑魔法:用浏览器原生的 Screen Wake Lock API。
它做什么?一句话:在需要时请求“点亮锁”,锁在、屏不熄。
核心用法(3 段代码就够)
1) 能不能用?
function isWakeLockSupported() {
return 'wakeLock' in navigator;
}
2) 申请 & 监听释放
let wakeLock = null;
async function requestWakeLock() {
try {
wakeLock = await navigator.wakeLock.request('screen'); // 关键
console.log('Screen wake lock acquired');
// 无论是你手动释放,还是系统自动释放,都会触发
wakeLock.addEventListener('release', () => {
console.log('Wake lock was released');
// TODO: 更新 UI 状态(例如按钮文字)
});
} catch (err) {
console.error(`${err.name}: ${err.message}`);
// TODO: 弹提示:低电量/省电模式/权限限制 可能导致失败
}
}
3) 主动释放
function releaseWakeLock() {
if (wakeLock) {
wakeLock.release();
wakeLock = null;
}
}
进阶心法:把“是否保持常亮”的意图写成状态变量(比如
shouldKeepAwake),让所有流程都围绕它判断,逻辑更稳。
它背后到底怎么运作?
navigator.wakeLock.request('screen')→ 申请一个屏幕常亮锁。- 成功后返回 WakeLockSentinel:
sentinel.released:是否已被释放
sentinel.type:锁类型(这里就是 'screen')
'release' 事件:任何释放都会触发(你/系统都算)
系统可能会自动释放:
- 你切走标签页 / 最小化窗口
- 设备低电量/省电
- 你离开当前页面
- 部分平台的策略变化(例如用户设置了不允许常亮)
关键细节:可见性变化要“无感恢复”
标签页一切走,锁就会被放。回来要自动重申:
let shouldKeepAwake = true; // 你的业务开关
document.addEventListener('visibilitychange', async () => {
if (document.visibilityState === 'visible' && shouldKeepAwake) {
await requestWakeLock(); // 回到前台时尝试恢复
} else if (document.visibilityState === 'hidden') {
releaseWakeLock();
}
});
再补两条常见“坑位”:
- 屏幕旋转(有些平台会间接触发释放)可加监听后重申:
screen.orientation?.addEventListener?.('change', () => {
if (document.visibilityState === 'visible' && shouldKeepAwake) {
requestWakeLock();
}
});
- 页面生命周期:在
pagehide/beforeunload及时释放,避免残留状态。
什么时候会失败?怎么优雅降级?
常见失败原因:
- 省电/低电量模式
- 用户或系统策略禁用
- 页面非 HTTPS(本地
localhost例外) - 标签页不在前台
降级建议:
- 特性检测 + 明确提示(如“请保持应用在前台以防屏幕熄灭”)
- 允许用户手动开启/关闭常亮(别强行一直亮)
- 结合业务交互:阅读、看菜谱、演示、考试、健身计时、直播监看等长时间无操作场景再开启
浏览器支持 & 环境要求
- 现代浏览器基本齐了(移动端也很给力);
- HTTPS 必需(开发时用
localhost可行); - 一律用特性检测守住边界,避免“想当然”的断言。
小贴士:PWA/全屏模式下体验通常更稳,提示用户“请保持应用在前台”。
一分钟接入清单
- [ ] 用
isWakeLockSupported()做特性检测 - [ ] 提供一个切换按钮(开 → 申请锁;关 → 释放锁)
- [ ] 监听
visibilitychange& 可选的screen.orientation,自动恢复 - [ ] 统一处理
'release'事件,同步 UI - [ ] 对失败做用户可理解的提示(低电量/省电/策略)
- [ ] 全站/页面启用 HTTPS
结语
你的用户在哪些场景需要“别熄屏”? 菜谱、教程、文档阅读、健身计时、直播监看、在线考试、电子票检票……一行 API,把“每 3 分钟被打断一次”的痛点从体验里彻底剔除。
周末就把它加上吧。等你分享实践心得与坑点,我们一起把细节打磨到爽!
AI大模型学习福利
作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
一、全套AGI大模型学习路线
AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获取
二、640套AI大模型报告合集
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获
三、AI大模型经典PDF籍
随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获
四、AI大模型商业化落地方案

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获
作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量

被折叠的 条评论
为什么被折叠?



