需使用 screen wake lock api 保持屏幕常亮,仅 chromium(chrome 84+等)和 firefox 119+ 支持,safari 需引导用户手动设置;须 https/localhost 环境且用户手势触发,播放时请求、暂停/结束时释放锁。

在HTML5视频播放时防止设备屏幕自动休眠,需使用 Screen Wake Lock API。该API允许网页在特定场景(如播放视频、导航、下载)下请求保持屏幕常亮,但需满足安全上下文(HTTPS 或 localhost)且用户已与页面发生交互(如点击、触摸)。
启用 Wake Lock 的基本步骤
需先检查浏览器支持,再请求锁屏权限,并在播放开始时激活、暂停/结束时释放:
- 调用
navigator.wakeLock.request("screen")获取WakeLockSentinel实例 - 将实例保存为变量,用于后续释放(
.release()) - 监听播放状态变化(如
play、pause、ended事件)动态管理锁 - 捕获
NotAllowedError等异常,降级处理(如提示用户手动保持唤醒)
兼容性与权限要求
当前仅 Chromium 内核浏览器(Chrome 84+、Edge 84+、Opera 70+)和 Firefox 119+ 原生支持 Screen Wake Lock。Safari 尚未实现,需通过引导用户开启系统级“防止自动锁定”设置作为补充方案。必须满足:
- 页面运行在 HTTPS 或
localhost环境下 - 调用
request()前已有用户手势触发(如点击播放按钮) - 不能在页面加载时自动调用,否则会抛出
NotAllowedError
实用代码示例
以下为轻量集成方式,适配常见播放控制逻辑:
let wakeLock = null;
async function requestWakeLock() {
try {
wakeLock = await navigator.wakeLock.request('screen');
wakeLock.addEventListener('release', () => {
console.log('Wake Lock 被释放');
});
} catch (err) {
console.warn('无法启用 Wake Lock:', err.name, err.message);
}
}
const video = document.querySelector('#myVideo');
video.addEventListener('play', () => {
if ('wakeLock' in navigator) requestWakeLock();
});
video.addEventListener('pause', () => {
if (wakeLock) wakeLock.release().then(() => wakeLock = null);
});
video.addEventListener('ended', () => {
if (wakeLock) wakeLock.release().then(() => wakeLock = null);
});
注意事项与备选方案
Wake Lock 不会阻止系统休眠(仅维持屏幕点亮),且在标签页非激活或浏览器最小化时可能自动释放。若需更广泛兼容:
- 对 iOS 设备,可提示用户开启「设置 → 显示与亮度 → 自动锁定 → 永不」
- 安卓 PWA 可配合
display: standalone提升权限信任度 - 避免长期持有锁——视频暂停超 30 秒建议主动释放,提升功耗体验
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











