告别“自动黑屏”——一个原生 JS API 就够了

周末给自家的在线学习项目做体验巡检,最大痛点不是功能,而是——看着看着屏幕就黑了。手又没动、系统就当你“离开”。解决它不需要黑魔法:用浏览器原生的 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大模型商业化落地方案

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值