docs.rodeo

MDN Web Docs mirror

IdleDetector

{{securecontext_header}} {{APIRef("Idle Detection API")}} {{SeeCompatTable}} {{AvailableInWorkers("window_and_dedicated")}} 

The IdleDetector interface of the {{domxref('idle_detection_api','Idle Detection API','','true')}}  provides methods and events for detecting user activity on a device or screen.

This interface requires a secure context.

{{InheritanceDiagram}} 

Constructor

Instance properties

Events

Static methods

Instance methods

Examples

The following example shows creating a detector and logging changes to the user’s idle state. A button is used to get the necessary user activation before requesting permission.

const controller = new AbortController();
const signal = controller.signal;

startButton.addEventListener("click", async () => {
  if ((await IdleDetector.requestPermission()) !== "granted") {
    console.error("Idle detection permission denied.");
    return;
  }

  try {
    const idleDetector = new IdleDetector();
    idleDetector.addEventListener("change", () => {
      const userState = idleDetector.userState;
      const screenState = idleDetector.screenState;
      console.log(`Idle change: ${userState}, ${screenState}.`);
    });

    await idleDetector.start({
      threshold: 60_000,
      signal,
    });
    console.log("IdleDetector is active.");
  } catch (err) {
    // Deal with initialization errors like permission denied,
    // running outside of top-level frame, etc.
    console.error(err.name, err.message);
  }
});

stopButton.addEventListener("click", () => {
  controller.abort();
  console.log("IdleDetector is stopped.");
});

Specifications

{{Specifications}} 

Browser compatibility

{{Compat}} 

In this article

View on MDN