Page visibility
Document.hidden は読み取り専用のプロパティで、ページが非表示になっているとみられるかどうかを示す論理値を返します。
ページが非表示であるかどうかを判断する代替方法としては、Document.visibilityState プロパティもあります。
対応ブラウザ
| 機能 | デスクトップ | モバイル | ||||
|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Safari | Chrome Android | Safari iOS | |
| visibilitychange イベントは、タブのコンテンツが表示状態または非表示状態になったときに document に発生します。 | 62 | 18 | 56 | 14.1 | 62 | 14.5 |
| Document.visibilityState は読み取り専用プロパティで、この文書の可視性を返します。文書がバックグラウンドにあるか、最小化されたウィンドウにあるか、あるいはその他の理由によってユーザーから見えない状態にあるかどうかを調べるために使用することができます。 | 33 | 12 | 18 | 7 | 33 | 7 |
注釈 1件
対応条件
- ベンダープレフィックス付きで対応: webkit (13)
注釈 3件
実装メモ
- Firefox 56以降、macOSでは、ウィンドウが半透明ではない別のアプリケーションによって完全に隠された場合にも、`true`が返されるようになりました。
削除済み
- このバージョンで機能が削除されました (52)
対応条件
- ベンダープレフィックス付きで対応: moz (10)
注釈 1件
対応条件
- ベンダープレフィックス付きで対応: webkit (18)
注釈 4件
制限事項
- このブラウザでは部分的にしか実装されていません
削除済み
- このバージョンで機能が削除されました (62)
実装メモ
- `onvisibilitychange` イベントハンドラプロパティはサポートされていません。
対応条件
- ベンダープレフィックス付きで対応: webkit (13)
注釈 3件
制限事項
- このブラウザでは部分的にしか実装されていません
削除済み
- このバージョンで機能が削除されました (18)
実装メモ
- `onvisibilitychange` イベントハンドラプロパティはサポートされていません。
注釈 7件
制限事項
- このブラウザでは部分的にしか実装されていません
削除済み
- このバージョンで機能が削除されました (14.1)
- このバージョンで機能が削除されました (14)
- このバージョンで機能が削除されました (10.1)
実装メモ
- ドキュメントから移動する際に `visibilitychange` イベントが発火しないため、`pagehide` イベントを確認するコードも追加してください(現在のすべてのブラウザでは、このケースで `pagehide` イベントが発火します)。 バグ 116769、バグ 151234、バグ 151610、およびバグ 194897 を参照してください。
- Safari 14以前では、このイベントはバブルしないため、`document.addEventListener('visibilitychange', ...)`は動作しますが、`window.addEventListener('visibilitychange', ...)`は動作しません。
- `onvisibilitychange` イベントハンドラプロパティはサポートされていません。
注釈 4件
制限事項
- このブラウザでは部分的にしか実装されていません
削除済み
- このバージョンで機能が削除されました (62)
実装メモ
- `onvisibilitychange` イベントハンドラプロパティはサポートされていません。
対応条件
- ベンダープレフィックス付きで対応: webkit (18)
注釈 7件
制限事項
- このブラウザでは部分的にしか実装されていません
削除済み
- このバージョンで機能が削除されました (14.5)
- このバージョンで機能が削除されました (14)
- このバージョンで機能が削除されました (10.3)
実装メモ
- ドキュメントから移動する際に `visibilitychange` イベントが発火しないため、`pagehide` イベントを確認するコードも追加してください(現在のすべてのブラウザでは、このケースで `pagehide` イベントが発火します)。 バグ 116769、バグ 151234、バグ 151610、およびバグ 194897 を参照してください。
- iOS 14以前のSafariでは、イベントがバブルアップしないため、`document.addEventListener('visibilitychange', ...)`は動作しますが、`window.addEventListener('visibilitychange', ...)`は動作しません。
- `onvisibilitychange` イベントハンドラプロパティはサポートされていません。
注釈 1件
対応条件
- ベンダープレフィックス付きで対応: webkit (13)
注釈 2件
削除済み
- このバージョンで機能が削除されました (52)
対応条件
- ベンダープレフィックス付きで対応: moz (10)
注釈 1件
対応条件
- ベンダープレフィックス付きで対応: webkit (18)
基本構文
JAVASCRIPT
document.addEventListener("visibilitychange", () => {
console.log(document.hidden);
// Modify behavior…
}); 実務での使いどころ
-
Page visibility の活用
Document.hidden は読み取り専用のプロパティで、ページが非表示になっているとみられるかどうかを示す論理値を返します。
注意点
- 古いブラウザでは対応していない場合がある。
実装メモ
- 一部の API はセキュアコンテキスト (HTTPS) やユーザー操作起点を必要とする。利用前に要件を確認すること。