Screen Wake Lockを実測した|タブを隠すと点灯維持は外れ、戻っても自動では復活しない
- 環境
- Chrome 155.0.8059.80(macOS)。画面を出さないheadless新モード
- 見たもの
- APIが返す状態(
releasedとvisibilityState) - 未確認
- 実際に画面が点いたままだったか。Edge・Safari・Firefox
- 測定日
- 2026-10-18
ブラウザから画面の点灯を保つ要求を出すScreen Wake Lock APIを、Chromeで測りました。結論から書くと、タブを隠した直後にロックは解除され、表示に戻しても元には戻りません。使い続けるには、戻ったときにもう一度要求を出す必要があります。
§1測ったのはChrome 1種類で、見たのはAPIの状態だけ
測定条件は次のとおりです。
- ブラウザ:Chrome 155.0.8059.80(macOS)。画面を出さないheadless新モードで実行しました。
- 非表示の作り方:ウィンドウを最小化しました。
- 測定日:2026年10月18日。
- 確認した内容:APIが返す状態(
releasedとvisibilityState)です。実際に画面が点いたままだったかは、確認していません。 - 未測定:Edge、Safari、Firefox。
§2結果は6項目
| 項目 | 結果 |
|---|---|
| HTTPのページ | navigator.wakeLockが存在しない(HTTPSでは存在する) |
| HTTPSで要求 | 成功。typeはscreen、releasedはfalse |
| ウィンドウを最小化 | visibilityStateがhiddenになり、ロックが自動で解除された。releaseイベントも発火 |
| 非表示中に新しく要求 | NotAllowedError(The requesting page is not visible) |
| 表示に戻したあと | ロックは解除されたまま。もう一度要求すると成功 |
| 2つ同時に要求 | どちらも成功。独立していて、片方をreleaseしてももう一方は残った |
§3HTTPでは、エラーではなく機能そのものが見えない
HTTPのページで'wakeLock' in navigatorを調べるとfalseでした。要求して失敗するのではなく、存在しません。機能の有無は、この式で確かめられます。公開するページはHTTPSにする必要があります。
§4戻ったときに、もう一度要求する
最小化した直後に、releaseイベントが発火しました(測定の誤差を含めて、約6ミリ秒後)。表示に戻しても、releasedはtrueのままです。そのため、タブが見えるようになったタイミングで、要求を出し直す必要があります。要点だけを書くと次のとおりです。
let lock = null;
async function acquire() {
if (document.visibilityState !== 'visible') return;
lock = await navigator.wakeLock.request('screen');
}
document.addEventListener('visibilitychange', acquire);
非表示のまま要求するとNotAllowedErrorになるため、visibilityStateがvisibleのときだけ要求します。Kasey Awakeも、タブに戻ったときに再び要求する作りです。
2つ同時に要求しても失敗しませんが、片方を解除してももう一方のロックは残りました。保持するロックは1つにして、取り直す前に前のものを解除したほうが、状態を追いやすくなります。
§5Kasey Awakeの画面では、隠すと「表示待ち」になり、戻ると自動で取り直す
同じ操作を、Kasey Awakeの画面でも測りました。開始して3秒待ち、ウィンドウを5秒隠してから、元に戻しています。

隠している間は画面を撮れないため、表示された文言だけを記録しました。
- 状態は「タブの表示待ち」に変わり、補足に「このタブに戻ると、自動で再取得します。」と出ました。
- タブの題名の先頭にあった「●」が消えました。
元に戻すと、状態は「点灯維持中」に戻りました。

経過時間は隠していた5秒も含めて進み、00:00:11になっています。この数字は「開始ボタンを押してからの時間」で、ロックが有効だった時間の合計ではありません。
画面が実際に点いたままかは、普段より長く待って確かめます。
§6この測定の限界
測ったのはChrome 1種類、画面を出さない環境でのAPIの状態だけです。EdgeやSafari、Firefoxで同じ結果になるかは、測っていません。画面が物理的に点灯し続けたかも、確認していません。環境による違いがあれば、追記します。