Skip to content

useScreenWakeLock

防止屏幕自动熄灭,保持屏幕常亮。

前置依赖

依赖参数

参数名类型说明
deps.vue.ref<T>(value: T) => Ref<T>Vue ref 函数
deps.vue.onUnmounted(fn: () => void) => voidVue onUnmounted 钩子
deps.wakeLockWakeLockWake 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>
}

参数

参数名类型必填说明
depsUseScreenWakeLockDeps依赖注入对象

返回值

属性类型说明
isSupportedRef<boolean>是否支持 Wake Lock API
isActiveRef<boolean>是否处于激活状态
errorRef<string | null>错误信息
request() => Promise<void>请求屏幕常亮
release() => Promise<void>释放屏幕常亮

工作原理

  1. 检查浏览器是否支持 Wake Lock API
  2. 调用 request() 请求屏幕常亮锁
  3. 自动监听锁释放事件(页面隐藏时会自动释放)
  4. 调用 release() 手动释放锁
  5. 组件卸载时自动释放锁

注意事项:

  • 页面不可见时(切换标签页、最小化)Wake Lock 会自动释放
  • 页面恢复可见后需要重新请求
  • 建议配合 usePageVisibility 监听页面可见性,自动重新请求

适用场景:

  • 视频播放
  • 在线导航
  • 长时间阅读
  • 演示文稿
  • 游戏

异常

无异常抛出