크롬 브라우저로 웹사이트를 볼때, 포커스가 나가거나 탭이 가려지거나 하면 웹사이트가 감지할 수 있나요?

1 답변

0 투표

네, 가능합니다. 크롬을 비롯한 대부분의 모던 브라우저는 탭 전환이나 창 포커스 변화를 웹페이지가 감지할 수 있도록 여러 가지 API를 제공합니다.


1. Page Visibility API

페이지가 백그라운드로 전환되었는지(탭이 가려졌는지) 감지할 때 주로 씁니다.

// visibilitychange 이벤트 등록
document.addEventListener('visibilitychange', () => {
  if (document.hidden) {
    console.log('페이지가 백그라운드로 전환되었습니다.');
    // TODO: 사용자 이탈 처리 로직
  } else {
    console.log('페이지가 다시 활성화되었습니다.');
    // TODO: 복귀 로직
  }
});
  • document.hidden 은 Boolean(true: 백그라운드)
  • document.visibilityState"visible", "hidden" 등 상태 확인 가능

2. Window Focus/Blur 이벤트

창(윈도우) 단위로 포커스가 가거나 벗어날 때 감지합니다.

window.addEventListener('blur', () => {
  console.log('브라우저 창이 포커스를 잃었습니다.');
});

window.addEventListener('focus', () => {
  console.log('브라우저 창이 포커스를 얻었습니다.');
});
  • 탭 외에 다른 애플리케이션으로 전환했을 때에도 blur 가 발생

3. Page Lifecycle API (옵션)

크롬 109+ 에서 지원하며, 백그라운드 탭 상태를 더 세밀하게 알 수 있습니다.

document.addEventListener('freeze', () => {
  console.log('페이지가 freeze(일시 정지) 상태에 진입');
});
document.addEventListener('resume', () => {
  console.log('페이지가 resume(재개) 상태');
});

주의사항

  • 정확한 “사용자 시청 여부”(실제로 화면을 바라보는지)는 알 수 없습니다.
  • 브라우저별 정책(절전 모드, 탭 쓰로틀링)으로 이벤트 호출 시점이나 주기가 달라질 수 있습니다.
  • 모바일 브라우저나 임베디드 웹뷰의 경우 일부 API가 제한될 수 있습니다.

이렇게 하면 “탭이 숨겨지거나”(Page Visibility API), “창 포커스가 바뀌거나”(focus/blur) 할 때 웹사이트에서 그 변화를 감지해 대응할 수 있습니다. 추가로 궁금한 점 있으면 언제든 말씀해주세요!

구로역 맛집 시흥동 맛집
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
add
...