Web API見本市
OS連携権限不要スマホ推奨判定中...

Screen Wake Lock API

画面の自動スリープ(消灯)を抑止できるAPI。レシピ表示や発表タイマーなど画面を点けたままにしたい場面で使う。

MDNのドキュメントを見る

1対応判定

ブラウザ対応バージョン
Chrome85+
Firefox126+
Safari16.4+

備考: 主要3ブラウザ対応

2権限フロー

  1. 権限不要このAPI

    API呼び出しだけで動く。プロンプトも操作起点の縛りもない

  2. ユーザージェスチャー必須

    ボタンクリック等のユーザー操作の中でしか呼べない。プロンプトは出ない

  3. 権限プロンプトあり

    呼び出すとブラウザが許可/ブロックのプロンプトを表示し、ユーザーが選ぶ

  4. iOS独自requestPermission

    iOSではrequestPermission()を操作起点で呼び、明示的に許可を得る

権限プロンプトなし。ただしページが非表示になると自動で解除されるため、visibilitychange での再取得を実装する。

現在の権限状態(navigator.permissions.query): このブラウザでは取得できません

3ライブデモ: スリープ防止トグルと自動解除の可視化

4コードスニペット

TypeScript(要約版)
let lock: WakeLockSentinel | null = null;

// スリープ防止を取得(ページが可視状態のときのみ成功)
async function acquire() {
  lock = await navigator.wakeLock.request("screen");
  lock.addEventListener("release", () => {
    console.log("解除されました"); // タブ非表示などで自動解除される
  });
}

// タブに戻ってきたら自動で再取得する
document.addEventListener("visibilitychange", async () => {
  if (document.visibilityState === "visible" && shouldKeepAwake) {
    await acquire();
  }
});

// 手動解除
await lock?.release();
lock = null;