WakeLockSentinel - 表示防止设备屏幕变暗或锁定时获取到的锁

安全上下文
该功能仅在部分或所有支持的浏览器中的安全上下文(HTTPS)中可用。

WakeLockSentinel 接口表示防止设备屏幕变暗或锁定时获取到的锁。获取到的 WakeLockSentinel 可以通过 release() 方法手动释放,也可以通过平台唤醒锁自动释放。 如果文档处于非活动状态或切换到后台,设备电量不足或用户打开了省电模式,则可能会被自动释放。 释放给定类型的所有 WakeLockSentinel 实例,将使底层平台唤醒锁被释放。

属性

此接口提供以下属性。

released 只读

返回一个布尔值,指示是否已释放 WakeLockSentinel

type 只读

返回一个 String,表示当前获取的 WakeLockSentinel 的类型。
可能的返回值是:

  • 'screen':屏幕唤醒锁。防止设备变暗或锁定屏幕。

事件处理程序

onrelease

当调用 release() 方法或用户代理释放唤醒锁时触发。

方法

release()

释放 WakeLockSentinel,返回一个 Promise,一旦成功释放了则进行解析。

实例

在这个例子中,我们创建了一个异步函数,它请求一个 WakeLockSentinel。一旦获得,我们将监听 onrelease 事件,该事件可用于提供适当的 UI 反馈。可以通过适当的交互来获取或释放该锁。

// 创建唤醒锁的变量引用
let wakeLock = null;

// 创建一个异步函数来请求唤醒锁
const requestWakeLock = async () => {
  try {
    wakeLock = await navigator.wakeLock.request('screen');

    // 监听释放事件
    wakeLock.addEventListener('release', () => {
      // 如果释放了唤醒锁,请相应地更改 UI
    });

  } catch (err) {
    // 如果唤醒锁定请求失败 - 通常与系统相关,例如电池电量低

  }
}

wakeLockOnButton.addEventListener('click', () => {
  requestWakeLock();
})

wakeLockOffButton.addEventListener('click', () => {
  if (wakeLock !== null) {
    wakeLock.release()
      .then(() => {
        wakeLock = null;
      })
  }
})

规范

规范 状态 备注
Screen Wake Lock API
WakeLockSentinel 的定义
编者的草案 Initial definition.

桌面浏览器兼容性

特性ChromeEdgeFirefoxInternet ExplorerOperaSafari
基础支持8484 不支持 不支持 支持 不支持
onrelease8484 不支持 不支持 支持 不支持
release8484 不支持 不支持 支持 不支持
released8787 不支持 不支持 支持 不支持
type8484 不支持 不支持 支持 不支持

移动浏览器兼容性

特性AndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
基础支持8484 未知 不支持 未知 支持 不支持
onrelease8484 未知 不支持 未知 支持 不支持
release8484 未知 不支持 未知 支持 不支持
released8787 未知 不支持 未知 支持 不支持
type8484 未知 不支持 未知 支持 不支持