Skip to content

Latest commit

 

History

History
85 lines (59 loc) · 3.06 KB

File metadata and controls

85 lines (59 loc) · 3.06 KB
title slug page-type status browser-compat
WakeLockSentinel
Web/API/WakeLockSentinel
web-api-interface
experimental
api.WakeLockSentinel

{{securecontext_header}}{{APIRef("Screen Wake Lock API")}}{{SeeCompatTable}}

The WakeLockSentinel interface of the Screen Wake Lock API provides a handle to the underlying platform wake lock and can be manually released and reacquired. An {{jsxref('Object')}} representing the wake lock is returned via the {{domxref('WakeLock.request()','navigator.wakelock.request()')}} method.

An acquired WakeLockSentinel can be released manually via the {{domxref('WakeLockSentinel.release','release()')}} method, or automatically via the platform wake lock. This can happen if the document becomes inactive or looses visibility, if the device is low on power or the user turns on a power save mode. Releasing all WakeLockSentinel instances of a given wake lock type will cause the underlying platform wake lock to be released.

{{InheritanceDiagram}}

Instance properties

This interface provides the following properties.

  • {{domxref("WakeLockSentinel.released", "released")}} {{ReadOnlyInline}} {{Experimental_Inline}}

    • : Returns a boolean indicating whether the WakeLockSentinel has been released.
  • {{domxref("WakeLockSentinel.type", "type")}} {{ReadOnlyInline}} {{Experimental_Inline}}

    • : Returns a string representation of the currently acquired WakeLockSentinel type. Return values are:

      • 'screen': A screen wake lock. Prevents devices from dimming or locking the screen.

Events

  • {{domxref("WakeLockSentinel.release_event", "release")}} {{Experimental_Inline}}
    • : Fired when the {{domxref('WakeLockSentinel.release','release()')}} method is called or the wake lock is released by the user agent.

Instance methods

  • {{domxref('WakeLockSentinel.release()', 'release()')}}
    • : Releases the WakeLockSentinel, returning a {{jsxref("Promise")}} that is resolved once the sentinel has been successfully released.

Examples

In this example we create an asynchronous function which requests a WakeLockSentinel. Once acquired we listen for the release event which can be used to give appropriate UI feedback. The sentinel can be acquired or released via appropriate interactions.

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

Specifications

{{Specifications}}

Browser compatibility

{{Compat}}