Open2
ブラウザのタブ切り替え検知について
focus, blur を利用する方法
window.addEventListener("blur", () => {
document.title = "非表示中";
});
window.addEventListener("focus", () => {
document.title = "表示中";
});
visibilityStateを利用する方法
document.addEventListener("visibilitychange", () => {
document.title = document.visibilityState === 'visible' ? "表示中" : "非表示中";
});
// visibilityState = 'visible' | 'hidden'
その他
document.hidden
いまは非推奨っぽい。
visibilityState
ページ可視性 API - MDNで紹介されているコード。
const audio = document.querySelector("audio");
// Handle page visibility change:
// - If the page is hidden, pause the video
// - If the page is shown, play the video
document.addEventListener("visibilitychange", () => {
if (document.hidden) {
audio.pause();
} else {
audio.play();
}
});
音楽を再生した状態でタブ切り替えをすると pause して音楽が一時停止する。タブに復帰すると再生が再開される。
ただ、他のウィンドウに移動した状態で元のタブとしてはアクティブだと visibilitychange が発火していなそう。