WakeLockSentinel

有限可用性

此功能不是基线,因为它在一些最常用的浏览器中无法使用。

安全上下文:此功能仅在安全上下文(HTTPS)中可用,在一些或所有支持浏览器中。

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

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

使用navigator.wakeLock.request()方法请求屏幕唤醒锁,该方法返回一个Promise,如果锁被授予,则该方法将用WakeLockSentinel对象完成。

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

如果平台锁被释放,则会在WakeLockSentinel上触发一个事件,允许应用程序配置其 UI,并在需要时重新请求锁。

EventTarget WakeLockSentinel

实例属性

还从其父接口EventTarget继承属性。

released 只读

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

type 只读

返回当前获取的WakeLockSentinel类型的字符串表示形式。返回值为

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

实例方法

还从其父接口EventTarget继承方法。

release()

释放WakeLockSentinel,返回一个Promise,该方法在监视器成功释放后被解析。

事件

释放

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

示例

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

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;
    });
  }
});

规范

规范
屏幕唤醒锁 API
# the-wakelocksentinel-interface

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参见