Returns a string indicating whether the users has interacted with either the screen or the device within the threshold provided to start(), one of "active" or "idle". This attribute returns null before start() is called.
Returns a Promise that resolves when the user has chosen whether to grant the origin access to their idle state. Resolves with "granted" on acceptance and "denied" on refusal.
Returns a Promise that resolves when the detector starts listening for changes in the user's idle state. userState and screenState are given initial values. This method takes an optional options object with the threshold in milliseconds where inactivity should be reported and signal for an AbortSignal to abort the idle detector.
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.
js
const controller =newAbortController();const signal = controller.signal;
startButton.addEventListener("click",async()=>{if((await IdleDetector.requestPermission())!=="granted"){
console.error("Idle detection permission denied.");return;}try{const idleDetector =newIdleDetector();
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.");});