Open2

ブラウザのタブ切り替え検知について

hirohiro

focus, blur を利用する方法

window.addEventListener("blur", () => {
    document.title = "非表示中";
});

window.addEventListener("focus", () => {
    document.title = "表示中";
});

visibilityStateを利用する方法

document.addEventListener("visibilitychange", () => {
    document.title = document.visibilityState === 'visible' ? "表示中" : "非表示中";
});

// visibilityState = 'visible' | 'hidden'

https://developer.mozilla.org/ja/docs/Web/API/Document/visibilityState

その他

document.hidden

いまは非推奨っぽい。

https://developer.mozilla.org/ja/docs/Web/API/Document/hidden

hirohiro

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 が発火していなそう。