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

瀏覽器相容性

另見