WakeLockSentinel

基准线 2025
新推出

自 ⁨2025 年 3 月⁩ 起,此功能可在最新的设备和浏览器版本上使用。此功能可能在旧设备或浏览器上无法正常工作。

安全上下文: 此功能仅在安全上下文(HTTPS)中可用,且支持此功能的浏览器数量有限。

WakeLockSentinel 接口是 屏幕唤醒锁 API 的一部分,可用于监视平台屏幕唤醒锁的状态,并在需要时手动释放锁。

屏幕唤醒锁可防止设备屏幕在应用程序需要持续运行时变暗或锁定。

通过 navigator.wakeLock.request() 方法请求屏幕唤醒锁,该方法返回一个 Promise,如果锁被授予,该 Promise 将以 WakeLockSentinel 对象解析。

已获取的屏幕唤醒锁可以通过 release() 方法手动释放,也可以通过平台屏幕唤醒锁自动释放。后者可能发生,如果文档变得不活跃或失去可见性,如果设备电量低,或者如果用户开启了省电模式。已释放的 WakeLockSentinel 无法重复使用:如果需要新的锁,必须使用 navigator.wakeLock.request() 请求一个新的 sentinel。释放给定唤醒锁类型的所有 WakeLockSentinel 实例将导致底层平台唤醒锁被释放。

如果平台锁被释放,将向 WakeLockSentinel 触发一个事件,允许应用程序配置其 UI 并根据需要重新请求锁。

EventTarget WakeLockSentinel

实例属性

还继承了其父接口 EventTarget 的属性。

released 只读

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

type 只读

返回当前已获取的 WakeLockSentinel 类型的字符串表示。返回值包括

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

实例方法

还继承了其父接口 EventTarget 的方法。

release()

释放 WakeLockSentinel,返回一个 Promise,该 Promise 在 sentinel 成功释放后解析。

事件

release

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

示例

在此示例中,我们创建了一个异步函数来请求 WakeLockSentinel。一旦获取了屏幕唤醒锁,我们就会监听 release 事件,该事件可用于提供适当的 UI 反馈。可以通过适当的交互来获取或释放 sentinel。

js
// create a reference for the wake lock
let wakeLock = null;

// create an async function to request a wake lock
const requestWakeLock = async () => {
  try {
    wakeLock = await navigator.wakeLock.request("screen");

    // listen for our release event
    wakeLock.addEventListener("release", () => {
      // if wake lock is released alter the UI accordingly
    });
  } catch (err) {
    // if wake lock request fails - usually system related, such as battery
  }
};

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

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

规范

规范
Screen Wake Lock API
# the-wakelocksentinel-interface

浏览器兼容性

另见