Kasey Labs
LOG 002 / 実測 /

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秒隠してから、元に戻しています。

開始して約3秒後。「点灯維持中」で、経過時間は00:00:02
開始して約3秒後。「点灯維持中」で、経過時間は00:00:02

隠している間は画面を撮れないため、表示された文言だけを記録しました。

  • 状態は「タブの表示待ち」に変わり、補足に「このタブに戻ると、自動で再取得します。」と出ました。
  • タブの題名の先頭にあった「●」が消えました。

元に戻すと、状態は「点灯維持中」に戻りました。

戻した直後の画面。「点灯維持中」に戻り、経過時間は00:00:11
戻した直後の画面。「点灯維持中」に戻り、経過時間は00:00:11

経過時間は隠していた5秒も含めて進み、00:00:11になっています。この数字は「開始ボタンを押してからの時間」で、ロックが有効だった時間の合計ではありません。

画面が実際に点いたままかは、普段より長く待って確かめます。

§6この測定の限界

測ったのはChrome 1種類、画面を出さない環境でのAPIの状態だけです。EdgeやSafari、Firefoxで同じ結果になるかは、測っていません。画面が物理的に点灯し続けたかも、確認していません。環境による違いがあれば、追記します。

Kasey Awake を開く

あわせて読みたい