useScreenWakeLock
防止屏幕自动熄灭,保持屏幕常亮。
前置依赖
依赖参数
| 参数名 | 类型 | 说明 |
|---|---|---|
deps.vue.ref | <T>(value: T) => Ref<T> | Vue ref 函数 |
deps.vue.onUnmounted | (fn: () => void) => void | Vue onUnmounted 钩子 |
deps.wakeLock | WakeLock | Wake Lock API |
环境要求
浏览器 API: Screen Wake Lock API
支持 Chrome、Edge 等基于 Chromium 的浏览器。需要 HTTPS 环境(localhost 除外)。
函数签名
typescript
function useScreenWakeLock(
deps: UseScreenWakeLockDeps
): UseScreenWakeLockReturn
interface UseScreenWakeLockDeps {
vue: VueCompositionAPI
wakeLock: WakeLock | undefined
}
interface UseScreenWakeLockReturn {
isSupported: Ref<boolean>
isActive: Ref<boolean>
error: Ref<string | null>
request: () => Promise<void>
release: () => Promise<void>
}参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
deps | UseScreenWakeLockDeps | 是 | 依赖注入对象 |
返回值
| 属性 | 类型 | 说明 |
|---|---|---|
isSupported | Ref<boolean> | 是否支持 Wake Lock API |
isActive | Ref<boolean> | 是否处于激活状态 |
error | Ref<string | null> | 错误信息 |
request | () => Promise<void> | 请求屏幕常亮 |
release | () => Promise<void> | 释放屏幕常亮 |
工作原理
- 检查浏览器是否支持 Wake Lock API
- 调用
request()请求屏幕常亮锁 - 自动监听锁释放事件(页面隐藏时会自动释放)
- 调用
release()手动释放锁 - 组件卸载时自动释放锁
注意事项:
- 页面不可见时(切换标签页、最小化)Wake Lock 会自动释放
- 页面恢复可见后需要重新请求
- 建议配合
usePageVisibility监听页面可见性,自动重新请求
适用场景:
- 视频播放
- 在线导航
- 长时间阅读
- 演示文稿
- 游戏
异常
无异常抛出